Вызов веб-сервисов из Silverlight 3 при работе вне браузера - PullRequest
0 голосов
/ 28 августа 2009

У нас есть замечательное приложение Silverlight 3, которое взаимодействует с веб-сервером, на котором запущены некоторые веб-службы WCF. Он хорошо работает, когда работает в браузере, но вскоре мы пытаемся запустить его вне браузера, он не вызывает наши веб-сервисы.

Я пытался выяснить, почему это происходит, но я не могу найти никакого объяснения.

При подключении отладчика к процессу sllauncher.exe я могу пошагово пройти по коду и увидеть, что вызывается асинхронный метод (Begin). Но, используя Fiddler, я вижу, что на сервер вообще нет трафика!

Я также проверил, что адрес конечной точки правильный и что конечная точка настроена правильно (все-таки она работает при работе в браузере).

Поэтому мне интересно, что может быть причиной проблемы и как ее отладить. Есть идеи?

EDIT: Я заметил, что наше приложение не работает в Internet Explorer. Но он отлично работает в Firefox! В этом нет ничего удивительного, поскольку в браузере отсутствует встроенное приложение для работы с браузером, но это может стать ключом к нашей проблеме.

Итак, знаете ли вы какие-либо различия между размещением Silverlight в Firefox и Internet Explorer?

Ответы [ 3 ]

1 голос
/ 28 августа 2009

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

Для упрощения отладки, если вы еще этого не сделали, оберните ваши сервисные вызовы следующим образом:

using System.Net;

if (NetworkInterface.GetIsNetworkAvailable()) { doSomethingAsync(); }
else { //Report the error or show status in UI }
1 голос
/ 28 августа 2009

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

0 голосов
/ 31 января 2010

Он работает в Firefox, а не в IE, потому что Firefox гораздо охотнее принимает временные сертификаты. Вы используете сервер сертификации?

Причина, по которой трафик не попадает на скрипач, заключается в том, что либо

  1. У вас нет файла clientaccesspolicy.xml по адресу HTTPS, к которому вы обращаетесь.
  2. вы запускаете приложение Silverlight из Visual Studio, поэтому на веб-сайте, на котором размещается клиентская SL-корзина из Visual Studio, сервер разработки ASP предотвращает выполнение определенных вызовов, особенно если ваш адрес веб-службы отличается от адреса веб-сайт размещен, и некоторые порты не отвечают, в результате чего самое странное поведение fiddler не делает абсолютно ничего.

В любом случае поведение приложения SL, не связанного с веб-сервером, при использовании HTTPS, связано с ограничениями среды размещения (попробуйте выполнить развертывание в IIS) или желанием клиента принять стратегию шифрования сертификации.

...