Междоменная Политика - PullRequest
0 голосов
/ 17 мая 2010

Я работаю с приложением Silvelright, которое использует службу WCF, я поместил междоменные и клиентские XML-файлы в wwwroot IIS, а также в папку приложения!

все же, когда клиент связывается со службой, он выдает ошибку, говоря;

Произошла ошибка при попытке сделать запрос к URI 'http://localhost:1528/MyService.svc’. Это может быть связано с попыткой доступа к службе междоменным способом без соответствующей междоменной политики или политики это не подходит для сервисов SOAP. Вам может потребоваться связаться с владельцем сервиса, чтобы опубликовать ……

Пожалуйста, помогите! Спасибо

1 Ответ

0 голосов
/ 17 мая 2010

Файл clientaccesspolicy.xml должен находиться на том же порту, что и ваш сервис. Это должно быть расположено в http://localhost:1528/clientaccesspolicy.xml

Если вы самостоятельно размещаете службу WCF, вам нужно разместить файл clientaccesspolicy.xml в вашей службе WCF. Я нашел самый простой способ сделать это - добавить отдельный контракт на обслуживание, который предоставляет HTTP GET файла clientaccesspolicy.xml.

[ServiceContract()]
public class PolicyRetriever
{
    [OperationContract, WebGet(UriTemplate = "/clientaccesspolicy.xml")]
    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>";

        if (System.ServiceModel.Web.WebOperationContext.Current != null)
        {
            System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.ContentType = "application/xml";
        }

        return new MemoryStream(Encoding.UTF8.GetBytes(result));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...