Вы не включили упомянутую реализацию IPolicyRetriever, но вот пример, который вы можете использовать.
Спецификация интерфейса:
[ServiceContract]
public interface IPolicyRetriever
{
[OperationContract, WebGet(UriTemplate = "/clientaccesspolicy.xml")]
Stream GetSilverlightPolicy();
//[OperationContract, WebGet(UriTemplate = "/crossdomain.xml")]
//Stream GetFlashPolicy();
}
Реализация интерфейса:
// IPolicyRetriever implementation
private Stream StringToStream(string result)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "application/xml";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
}
public Stream GetSilverlightPolicy()
{
string result = @"<?xml version=""1.0"" encoding=""utf-8""?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=""*"">
<domain uri=""*""/>
</allow-from>
<grant-to>
<resource path=""/"" include-subpaths=""true""/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>";
return StringToStream(result);
}
Затем вы можете включить следующее в XML-файл конфигурации вашего сервера.Это должно быть на стороне сервера, а не на стороне клиента.Я подчеркиваю это, потому что вы включили конфигурацию клиента выше в свой вопрос.
<behaviors>
<endpointBehaviors>
<behavior name="WebHttpNewBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
...
</behaviors>
<services>
<service behaviorConfiguration="NewBehavior">
<endpoint behaviorConfiguration="WebHttpNewBehavior" binding="webHttpBinding"
bindingConfiguration="" name="PolicyEndpoint" contract="WCFService.IPolicyRetriever" />
...
</service>
</services>
В качестве альтернативы, если вы решили создать свой хост программно (именно так я делаю, а не использовать файл ClientConfig, поэтомуприведенный выше пример может быть неправильным на 100%):
ServiceHost host = new ServiceHost(serviceType);
host.AddServiceEndpoint(typeof(IPolicyRetriever), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior());
Я знаю, что вы просили не предоставлять ссылки, но я использовал http://blogs.msdn.com/b/asiatech/archive/2010/05/07/how-to-consume-a-self-hosted-wcf-service-in-a-cross-domain-environment-by-silverlight-client.aspx в качестве справки, чтобы обновить память, потому что я неу меня есть доступ к моему проекту Silverlight / WCF прямо сейчас.