WCF и Silverlight CrossDomain.xml - PullRequest
       0

WCF и Silverlight CrossDomain.xml

2 голосов
/ 01 июля 2010

Извиняюсь, если раньше об этом спрашивали (я нигде не мог найти ответ), но у меня есть созданное мной приложение-служба WCF, и я пытаюсь получить доступ через мое приложение Silverlight 4. Я добавил ссылку на службу в приложение SilverLight и просто пытаюсь вызвать один из существующих по умолчанию методов в службе (GetData). При вызове метода я получаю ошибку:

Произошла ошибка при попытке сделать запрос к URI "мой URI" Это может быть из-за попытки получить доступ к обслуживание в междоменном режиме без правильная междоменная политика, или файл политики, который не подходит для сервисов SOAP.

Я знаю, что мне нужен файл crossdomain.xml, но, кажется, не имеет значения, куда я помещаю файл crossdomain.xml, я все еще получаю сообщение об ошибке, это содержимое файла:

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

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 01 июля 2010

Неважно, где вы размещаете файл политики - его нужно поместить «в корень» веб-сервера, на котором работает ваша служба.

Это довольно хорошо задокументировано на http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx

Мой лучший совет по этим вопросам - запускать инструмент Fiddler и отслеживать трафик, и вы должны увидеть, что Silverlight ищет файл clientaccesspolicy.xml (а также файл crossdomain.xml, который имеет другой формат), и это должно сделать его проще определить, где Silverlight ищет файл.

Mike.

0 голосов
/ 02 июля 2010

Во-первых, это видео помогает вообще? http://channel9.msdn.com/posts/mtaulty/Silverlight-4-Beta-Networking-Part-4-Cross-Domain-HTTP/

Во-вторых, я диагностирую их следующим образом:

1) Я использую Fiddler, чтобы убедиться, что я вижу Silverlight REQUEST файл clientaccesspolicy.xml и что он ПОЛУЧАЕТ clientaccesspolicy.xml - т.е. проверяет, что ваш веб-сервер возвращает clientaccesspolicy.xml и silverlight не получает NotFound вернуться к своему запросу. Вы можете видеть это в Fiddler. Кстати, вы не упоминаете, используете ли вы IIS или Cassini? IIRC "localhost" может создать некоторые проблемы для скрипача, поэтому я обычно использую IIS и правильное имя машины.

2) Когда я знаю, что Silverlight определенно получает файл clientaccesspolicy.xml, я обычно создаю наиболее расслабленную версию файла, которую я могу себе представить. Что-то вроде;

и когда я счастлив, что это работает, я уточняю список доменов, путей, заголовков и методов до того, что мне действительно нужно.

Надеюсь, это поможет.

Mike.

0 голосов
/ 01 июля 2010
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

Вот очень простой crossdomain.xml файл.По сравнению с вашим, вы написали файл clientaccesspolicy.xml.Переименуйте файл в clientaccesspolicy.xml, и все будет в порядке.

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