Приложение отладки (Silverlight + PHP веб-сервис) на VS2010 - PullRequest
1 голос
/ 23 июня 2011

Я использую Visual Studio 2010, Silverlight 4 и веб-сервис PHP (NuSOAP).Все работает нормально, когда я копирую файл XXXTestPage.html и файл XXX.xap на удаленный сервер и открываю страницу в веб-браузере.У меня есть файл "clientaccesspolicy.xml" на удаленном сервере, и это заставляет его работать.Итак, веб-сервис NuSOAP работает хорошо не только с помощью такого инструмента, как soapUI, но и из моего приложения Silverlight.Тем не менее, я не могу отладить мою заявку в VS2010.Я получаю сообщение об ошибке: « CommunicationException не было обработано кодом пользователя. Произошла ошибка при попытке сделать запрос к URI 'http://xxxxxxxx/php/service.php'.. Это может быть связано с попыткой доступа к службе междоменным способом без надлежащегомеждоменная политика или политика, которая не подходит для служб SOAP. Вам может потребоваться связаться с владельцем службы, чтобы опубликовать файл междоменной политики и убедиться, что он позволяет отправлять HTTP-заголовки, связанные с SOAP.ошибка также может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibleToAttribute. Дополнительные сведения см. во внутреннем исключении."

Итак, мое решение VS2010 имеет только один проект, которыйэто приложение SilverlightЯ НЕ использую asp.net.

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

Любой знает, какподходить к этому?

Большое спасибо.

Редактировать 1 .С Fiddler (и удаляя все кэшированные данные IE9 перед каждым экспериментом) я видел это: a) За пределами VS2010 я вижу три HTTP-сеанса: один для файла .html, другой для файла .xap и последний дляфайл service.php.Все работает нормально вне VS2010.б) Внутри VS2010 (при попытке отладки) я вижу только один HTTP-сеанс для файла clientaccesspolicy.xml.Я вижу ответ, содержащий именно это:

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

Поскольку больше нет сеансов HTTP (где они должны быть, потому что код вызывает веб-сервис NuSOAP), похоже, что-то есть вXML-файл, который VS2010 не любит.Я скопировал этот XML-файл со страницы MSDN.Что-то не так с этим?Разве это не позволяет отправлять связанные с SOAP заголовки HTTP?Спасибо.

Редактировать 2 .Понял!Файл "clientaccesspolicy.xml" должен содержать:

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

Итак, решено!Теперь я могу отладить :-) В любом случае, спасибо.

...