Я сталкиваюсь со странной проблемой, связанной с междоменным вызовом веб-службы в Silverlight 4.
Сразу после запуска приложение вызывает веб-службу на том же хосте, откуда оно было загружено, но на другом порту.(Например, приложение находится на http://www.mydomain.com:80, а веб-сервис на http://www.mydomain.com:81). SSL не задействован. Хост предоставляет правильный файл clientaccesspolicy.xml и все работает правильно большую часть времени (например, 99,9%).
Однако в некоторых случаях браузер не запрашивает clientaccesspolicy.xml, в результате чего вызов веб-службы блокируется и завершается ошибкой с междоменной ошибкой.
В типичном случае это последовательность запросов, которую вы видите с помощью инструментов разработчика Fiddler или Chrome:
- index.html (страница, на которой размещено приложение silverlight)
- silverlight.js
- application.xap
- clientaccesspolicy.xml (запрошено и загружено правильно)
- вызов веб-службы
Однако в некоторых случаях вы видите только
- index.html (страница, на которой размещено приложение silverlight)
- silverlight.js
- application.xap
- -> междоменная ошибка (не запрашивается клиентская политика, не требуется вызов веб-службы).
Это происходит только на меньшинстве компьютеров (на всех запущенных Windows 7), если выполняются все эти условия:
- приложение, работающее в Chrome, Firefox или вне браузера (IE всегда работает)
- это при первой загрузке страницы (т.е. если вы нажмете кнопку перезагрузки браузера, проблема исчезнет.Закройте / перезапустите браузер, и в первый раз у вас все еще будет проблема)
- не работает Fiddler (если вы запускаете трафик через Fiddler, проблема исчезает).Инструменты разработчика Chrome, однако, не действуют.
- машина находится в том же домене, что и сервер приложений 1055 .Если вы обращаетесь к странице из внешней сети (с той же машины), проблема не существует.
На этих машинах при таких обстоятельствах проблема воспроизводима на 100%.
Что может быть причиной этого?Какие шаги я могу выполнить, чтобы отследить проблему?