Ошибка при вызове службы WCF из приложения Silverlight? - PullRequest
1 голос
/ 01 апреля 2012

Я вызываю службу из приложения Silverlight и получаю ошибку crossdomainploicy.Я положил clientaccesspolicy.xml в ту же папку, что и xap.file.

http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx

Произошла ошибка при попытке сделать запрос к URI 'http://localhost/Service1.svc'. Это может быть связано с попыткой доступа к службе в кросс-сети.доменный путь без надлежащей междоменной политики или политики, которая не подходит для сервисов SOAP.Вам может потребоваться связаться с владельцем сервиса, чтобы опубликовать файл междоменной политики и убедиться, что он позволяет отправлять HTTP-заголовки, связанные с SOAP.Эта ошибка также может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibleToAttribute.Пожалуйста, смотрите внутреннее исключение для более подробной информации

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

clientaccesspolicy.xml должен находиться в корневой папке домена, на котором размещается служба (например, http://mydomain.com/crossdomainpolicy.xml, а не в каталоге xap-файла.

Это четко указано на странице, на которую вы ссылаетесь:

Поместите файл clientaccesspolicy.xml в корень домена, где размещена служба, для настройки службы для разрешения междоменного доступа.

0 голосов
/ 01 апреля 2012

Вы сделали веб-сервис или используете сторонний веб-сервис? Упомянутая вами статья http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx применима, только если вы являетесь тем, кто сделал веб-сервис.

Вы столкнулись с ошибкой SOS сайта происхождения. Если вы пытаетесь использовать стороннюю веб-службу, а они не используют клиентскую политику доступа, вы можете обойти это, создав оболочку для веб-службы. По сути, вам придется создать веб-сервис, который вы размещаете на том же сайте происхождения, что и приложение Silverlight. Ваш веб-сервис будет затем вызывать сторонний веб-сервис и соответственно возвращать значения.

Из-за правил безопасности «песочницы» приложений Silverlight они могут обмениваться данными только с веб-сервисами, относящимися к одному и тому же сайту происхождения, если только ClientAccessPolicy не применяется к веб-сервису, открывая его для использования за пределами сайта происхождения. Опять же, если вы не являетесь хостером веб-сервиса, вы можете не иметь никакого контроля над этим.

SOS применяется к имени хоста, порту и протоколу. Таким образом, http://localhost/ отличается от https://localhost/, а http://localhost:9999/ отличается от http://localhost:80/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...