2014-10-20 3 views
0

Я немедленно заявляю, что я очень новичок в разработке Xamarin. Тем не менее, вот предыстория:Не удалось получить доступ к автономному WCF-сервису Mac от Silverlight

У нас есть приложение Silverlight, которое может успешно подключиться к самообслуживаемой службе WCF, когда оно размещено в Windows. Поскольку нам нужна эта услуга, которая будет успешно размещена на Mac, мы переносили ее на Xamarin и могли подключаться к самообслуживаемому сервису с помощью простого консольного приложения, отличного от Silverlight (т. Е. Вручную настраивая конечные точки и канал).

При попытке подключиться с помощью Silverlight, я получаю следующее исключение: произошло

ошибка при попытке сделать запрос к URI «...». Этот может быть вызван попыткой доступа к службе в междоменном способе без надлежащей политики междоменного размещения или политики, которая непригодна для служб SOAP. Вам может потребоваться связаться с владельцем службы , чтобы опубликовать файл политики междоменной политики и обеспечить его возможность отправлять HTTP-заголовки, связанные с SOAP. Эта ошибка также может быть вызвана с использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibleToAttribute. Для получения дополнительной информации см. Внутреннее исключение .

Возможно ли, чтобы Xamarin выполнил политику доступа и перекрестных доменов через поток (как в this example)? Мне также интересно, что, если таковые имеются, другие изменения должны произойти в клиентской службе ServiceReferences.ClientConfig.

Любые указатели в правильном направлении были бы очень признательны.

Спасибо.

ответ

0

Мне удалось решить эту проблему, настроив хост-службу и отдельный хост веб-службы для обслуживания политики доступа. Я по-прежнему использовал код из примера, указанного в исходном сообщении, но просто отделил службу политики доступа к своему собственному узлу веб-службы вместо того, чтобы быть дополнительной конечной точкой на главном хосте службы.

Uri httpUrl = new Uri("http://192.168.2.230:8090/MyService"); 
    Uri webHttpUrl = new Uri("http://192.168.2.230:8090/"); 
    //Create ServiceHost 
    ServiceHost host = new ServiceHost(typeof(MyService), httpUrl); 
    WebServiceHost webHost = new WebServiceHost (typeof(AccessPolicyService), webHttpUrl); 
Смежные вопросы