Проблема Silverlight WCF с файлом междоменной политики - PullRequest
2 голосов
/ 24 июня 2011

Я видел несколько тем по этой проблеме, но ни одна из них не работала для меня.У меня есть простое приложение Silverlight.Я использую сервис WCF.Когда я вызываю метод GetOrderList из службы, я получаю следующую ошибку:

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

Вот мой код:

public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            ServiceReference1.ServiceClient sc = new ServiceReference1.ServiceClient();
            sc.GetOrderListAsync("testuser");
            sc.GetOrderListCompleted += new EventHandler<ServiceReference1.GetOrderListCompletedEventArgs>(sc_GetOrderListCompleted);
        }

        void sc_GetOrderListCompleted(object sender, ServiceReference1.GetOrderListCompletedEventArgs e)
        {
            var RESULT = e.Result;
        }
    }

Это мой файл политики клиентского доступа, который я поместил в свой wwwroot:

<?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> 

Когда я запускаю fiddler, он находит «clientaccesspolicy.xml» с 200 OK (текст / xml), поэтому я знаю, что находит файл.

В чем может быть проблема?У меня есть недопустимый файл политики?Если я создаю консольное приложение и использую сервис, я могу вызвать метод с проблемой.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 24 мая 2013
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Ошибка доступа к междоменной веб-службе Silverlight - это может быть связано с попыткой доступа к службе междоменным способом без соответствующей междоменной политики

спасибо .....

0 голосов
/ 30 июня 2011

Я заметил, что вы используете HTTPS ( https : //testserver2.mydomain.org/ORDERNET/WCFServices/OrderService/OrderService.svc)

Вы пытались явно добавить https://* uri в файл политики междоменного домена:

<domain uri="https://*"/>

Если вам нужна поддержка http, добавьте оба:

<domain uri="http://*"/>
<domain uri="https://*"/>
0 голосов
/ 28 июня 2011

У меня была похожая проблема, но со службой, имеющей протокол http, которая была решена с помощью файла .clientconfig.

...