<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>WCF</title>
        <link>http://www.darkside.co.za/category/10.aspx</link>
        <description>WCF</description>
        <language>en-ZA</language>
        <copyright>Ryan Schreiber</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>Consuming a self-hosted WCF service in Silverlight</title>
            <link>http://www.darkside.co.za/archive/2009/04/09/consuming-self-hosted-wcf-service-silverlight.aspx</link>
            <description>&lt;p&gt;If you've decided to self-host a WCF service - or as in my case you already have a service in production but need it to be consumed by a Silverlight application, but keep on getting a security exception, here's a method of getting your existing services to work. It involves getting the WCF service to serve a "file" called "clientaccesspolicy.xml" when one is requested, as is done by Silverlight.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DOWNLOAD&lt;/strong&gt; - &lt;a target="_blank" href="http://www.darkside.co.za/files/WCF4Silverlight.Zip"&gt;WCF4Silverlight.Zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Firstly, if you haven't already, you'll need to expose your services using an http binding. In my example project, I have a service &lt;strong&gt;MyService&lt;/strong&gt; which is exposed using netTcp. My configuration file originally looked like this: &lt;/p&gt;
&lt;div class="CodeCollapse"&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;enableMetaData&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceMetadata&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Darkside.WCF4Silverlight.MyService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;enableMetaData&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;add&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;net.tcp://localhost:9000&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Calculator&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;netTcpBinding&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Darkside.WCF4Silverlight.IMyService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;I modified the configuration file to look like this:  &lt;/p&gt;
&lt;div class="CodeCollapse"&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;xml&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;version&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;1.0&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; ?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;enableMetaData&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceMetadata&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpointBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;webHttpBehavior&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;webHttp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpointBehaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Darkside.WCF4Silverlight.MyService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;enableMetaData&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;add&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;net.tcp://localhost:9000&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;add&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;http://localhost:9001&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Calculator&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;netTcpBinding&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Darkside.WCF4Silverlight.IMyService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Calculator&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;basicHttpBinding&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Darkside.WCF4Silverlight.IMyService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;""&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;webHttpBinding&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;webHttpBehavior&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Darkside.WCF4Silverlight.IClientAccessPolicy&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;You'll notice on line 11 I added a new behaviour, on line 21 I added a new base address for the http exposed services, and I've added two extra endpoints on lines 25 and 26. &lt;/p&gt;
&lt;p&gt;The first additional endpoint (line 25) is to expose my existing service over an http binding that can be consumed by Silverlight. The second additional endpoint (line 26), which has no address, is what we'll use to serve the file. It also has the new behaviour added to it to enable it as a REST service. &lt;/p&gt;
&lt;p&gt;On a side note: If you don't have this behaviour configuration configured, you may an error along the lines of "&lt;font color="#ff0000"&gt;&lt;em&gt;The message with To '*' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree&lt;/em&gt;&lt;/font&gt;". Originally, before I had the behaviour in and I requested the URL in my browser all worked well. Suddenly, after making some minor changes, the error above occurred and didn't stop until the behaviour was configured.&lt;/p&gt;
&lt;p&gt;Back in your source code, you need to add a contract as follows: &lt;/p&gt;
&lt;div class="Code"&gt;
&lt;pre style="MARGIN: 0px"&gt;[&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;]&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IClientAccessPolicy&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;{&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;    [&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;WebGet&lt;/span&gt;(UriTemplate = &lt;span style="COLOR: #a31515"&gt;"/clientaccesspolicy.xml"&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;    &lt;span style="COLOR: #2b91af"&gt;Stream&lt;/span&gt; GetClientAccessPolicy();&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In your service, modify the definition of the class to also implement this new contract. The implementation of the &lt;strong&gt;GetClientAccessPolicy&lt;/strong&gt; method is included in the excerpt below:&lt;/p&gt;
&lt;div class="CodeCollapse"&gt;
&lt;pre style="MARGIN: 0px"&gt;   &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;MyService&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IMyService&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;IClientAccessPolicy&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;    {&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;//Existing code...&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt; &lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Stream&lt;/span&gt; GetClientAccessPolicy()&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;        {&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;            &lt;span style="COLOR: blue"&gt;const&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; result = &lt;span style="COLOR: #a31515"&gt;@"&amp;lt;?xml version=""1.0"" encoding=""utf-8""?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;&amp;lt;access-policy&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;    &amp;lt;cross-domain-access&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;        &amp;lt;policy&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;            &amp;lt;allow-from http-request-headers=""*""&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;                &amp;lt;domain uri=""*""/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;            &amp;lt;/allow-from&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;            &amp;lt;grant-to&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;                &amp;lt;resource path=""/"" include-subpaths=""true""/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;            &amp;lt;/grant-to&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;        &amp;lt;/policy&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;    &amp;lt;/cross-domain-access&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;&lt;span style="COLOR: #a31515"&gt;&amp;lt;/access-policy&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt; &lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;WebOperationContext&lt;/span&gt;.Current != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;                &lt;span style="COLOR: #2b91af"&gt;WebOperationContext&lt;/span&gt;.Current.OutgoingResponse.ContentType = &lt;span style="COLOR: #a31515"&gt;"application/xml"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;MemoryStream&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Encoding&lt;/span&gt;.UTF8.GetBytes(result));&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="MARGIN: 0px"&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;You can now start the service host, open up your browser and, if you're using the sample application above, enter the url &lt;a href="http://localhost:9001/clientaccesspolicy.xml"&gt;&lt;strong&gt;http://localhost:9001/clientaccesspolicy.xml&lt;/strong&gt;&lt;/a&gt;. You should get a response along the lines of this displayed in your browser:&lt;/p&gt;
&lt;div class="Code"&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;access-policy&amp;gt;&lt;br /&gt;
    &amp;lt;cross-domain-access&amp;gt;&lt;br /&gt;
        &amp;lt;policy&amp;gt;&lt;br /&gt;
            &amp;lt;allow-from http-request-headers="*"&amp;gt;&lt;br /&gt;
                &amp;lt;domain uri="*"/&amp;gt;&lt;br /&gt;
            &amp;lt;/allow-from&amp;gt;&lt;br /&gt;
            &amp;lt;grant-to&amp;gt;&lt;br /&gt;
                &amp;lt;resource path="/" include-subpaths="true"/&amp;gt;&lt;br /&gt;
            &amp;lt;/grant-to&amp;gt;&lt;br /&gt;
        &amp;lt;/policy&amp;gt;&lt;br /&gt;
    &amp;lt;/cross-domain-access&amp;gt;&lt;br /&gt;
&amp;lt;/access-policy&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
Now you can safely reference your service from you Silverlight application, and the cross domain security issues should be resolved, as the request for the file "&lt;strong&gt;clientaccesspolicy.xml&lt;/strong&gt;" by the application will now be responded to by your service.&lt;img src="http://www.darkside.co.za/aggbug/98.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Schreiber</dc:creator>
            <guid>http://www.darkside.co.za/archive/2009/04/09/consuming-self-hosted-wcf-service-silverlight.aspx</guid>
            <pubDate>Thu, 09 Apr 2009 02:44:11 GMT</pubDate>
            <comments>http://www.darkside.co.za/archive/2009/04/09/consuming-self-hosted-wcf-service-silverlight.aspx#feedback</comments>
            <wfw:commentRss>http://www.darkside.co.za/comments/commentRss/98.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>