WCF RIA дает EndpointNotFoundException в Azure при доступе через WP7

Я целый день боролся с проблемой службы доменов WCF RIA.

Я пишу сервисную библиотеку WCF RIA, которая развернута в Windows Azure. Я получаю к нему доступ через Silverlight и клиент Windows Phone 7. У меня есть два ASP.NET-проекта как две веб-роли в моем облачном приложении, которые действуют как две разные конечные точки.

Первый предоставляет доступ через SSL для клиента Silverlight.

Второй - простая конечная точка без аутентификации для клиента WP7. Он работает на порту 8080.

На моем местном cassini все работает отлично. Я могу получить доступ к услуге с обоими клиентами. В облаке я могу использовать только клиент Silverlight. Когда я пытаюсь получить доступ к службе с помощью приложения WP7, я получаю:

System.ServiceModel.EndpointNotFoundException wurde nicht behandelt. Сообщение = не было прослушивания конечной точки на http://myapp.cloudapp.net:8080/Services/MyRIAServiceLib-Web-MyService.svc/soap которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Смотрите InnerException, если имеется, для более подробной информации.

Внутреннее исключение имеет тип System.Net.WebException и говорит:

Удаленный сервер возвратился и ошибка: NotFound

Я добавил автоматическую ссылку ServiceReference в свое приложение WP7, чтобы подключиться к службе WCF. Когда я это делаю, VS2010 успешно распознает Сервис и генерирует код, чтобы сделать его пригодным для использования. Это должно означать, что услуга доступна и может быть найдена, верно? Когда я захожу на http://myapp.cloudapp.net:8080/MyRIAServiceLib-Web-MyService.svc через браузер, я вижу обычное сообщение "Вы создали службу".

Я добавил все dll в качестве локальных копий со значением true, которое может отсутствовать в облаке, но, возможно, я пропустил некоторые. Мой web.config выглядит так:

<configSections>
  <sectionGroup name="system.serviceModel">
    <section name="domainServices" type="System.ServiceModel.DomainServices.Hosting.DomainServicesSection, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </sectionGroup>
</configSections>
<system.serviceModel>     
<domainServices>
  <endpoints>
    <add name="soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </endpoints>
</domainServices>  
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"    multipleSiteBindingsEnabled="true" />
</system.serviceModel> 
<system.webServer>
 <validation validateIntegratedModeConfiguration="false" />
   <modules runAllManagedModulesForAllRequests="true">
     <add name="DomainServiceModule" preCondition="managedHandler" 
       type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   </modules>
 </system.webServer>
 <system.web>
   <customErrors mode="Off"/> 
   <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
   <httpModules>
   <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   </httpModules>
 </system.web> 

Любая помощь, пожалуйста? Я застрял и прочитал и искал об этой проблеме в течение нескольких часов.

Я могу получить доступ к машине Azure с помощью RDP. Как я могу отладить / отследить эту проблему? Я буду рад использовать трассировку Fiddler/WCF, если кто-то может привести меня на правильный путь.

2 ответа

Решение

Это казалось случайной ошибкой, которая, вероятно, была вызвана тем, что не удалось восстановить соединение со службой (хотя она была доступна). Обновление соединения несколько раз удаляло исключение в конечном итоге (это может занять от нескольких минут до полного дня).

Проверьте 2 вещи:

1) Убедитесь, что ваш прокси настроен правильно.

2) Если вы используете SSL, убедитесь, что вы установили сертификаты на телефон / эмулятор.

Ошибка, которую вы видите, является универсальной, для которой говорят wcf, невозможно установить сетевое соединение.

Другие вопросы по тегам