WCF + Console Application
Suppose you have a nice Console Application. Suppose you want to host a WCF service. And suppose you want to create a fancy Silverlight app that consumes this WCF service.
You’ll soon discover that something isn’t working as expected…long story short, the client app is looking for a ClientAccessPolicy.xml file. And why in the world shouldn’t we provide it?
Here’s what you have to do:
1) Create another WCF Service, call it CrossDomainService
2) Add this method:
<br /> [OperationContract]<br /> [WebGet(UriTemplate = "ClientAccessPolicy.xml")]<br /> public Message GetClientAccessPolicy()<br /> {<br /> using (var filestream = File.Open(@"ClientAccessPolicy.xml", FileMode.Open))<br /> {<br /> var buff = new byte[filestream.Length];<br /> filestream.Read(buff, 0, (int)filestream.Length);<br /> filestream.Close();<br /> var stream = new MemoryStream(buff);<br /> return Message.CreateMessage(MessageVersion.None, "", XmlReader.Create(stream));<br /> }<br /> }<br />
3) Add a ClientAccessPolicy.xml file to your project (you may find thousand of examples online…look at this maybe)
4) Add this to your app.config:
`
</behaviors>
` `
<endpoint address="" behaviorConfiguration="CrossDomainServiceBehavior"
binding="webHttpBinding" contract="CrossDomainService" />
</services>`
Obviously make sure that the baseAddress has the same root as the WCF Service you want to expose at first 🙂