Ошибка безопасности междоменной политики WCF - PullRequest
2 голосов
/ 28 августа 2009

Я использую VSTS 2008 + C # + WCF + .Net 3.5 + Silverlight 3.0. Я размещаю элемент управления Silverlight на html-странице и отлаживаю его из VSTS 2008 (нажмите F5, затем запустите на встроенном веб-сервере разработки ASP.Net VSTS 2008), затем вызовите другую службу WCF (размещенную на другом компьютере с IIS 7.0 + Vista) , Служба WCF очень проста, просто верните постоянную строку клиенту.

При вызове службы WCF из Silverlight я получил следующее сообщение об ошибке:

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

Вот файл clientaccesspolicy.xml, что-то не так?

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from  http-request-headers="*">
        <domain uri="*">
        </domain>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"></resource>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Ответы [ 3 ]

0 голосов
/ 23 декабря 2010

У меня была похожая проблема, но мое решение было намного проще. В моем файле clientConfig мои конечные адреса для разных сервисов имели разные URL. У некоторых был локальный хост, а у некоторых имя моей машины в URL. Как только я заставил их всех использовать локальный хост, это решило мою проблему.

0 голосов
/ 24 октября 2011

Одной из идей может быть использование fiddler и поиск запроса, который запрашивает crossdomainpolicy xml. Это терпит неудачу? Проверьте адрес, на который он указывает. Я отладил свою проблему, используя это. Он указывал на корень сервера, и мой файл crossdomainpolicy xml находился в папке проекта WCF.

0 голосов
/ 01 сентября 2009

Это может быть съемка в темноте. Но я помню, что сталкивался с подобным сценарием, когда локально настраивал службу WCF в Vista и IIS7. как выяснилось, мне нужно было добавить несколько строк в мой файл web.config, а точнее с помощью baseAddressPrefixFilters. У меня была проблема, потому что на моем веб-сайте по умолчанию было несколько привязок хоста. это заняло бы *: 80 и www.mydomain.com:80, и WCF это не понравилось бы.

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