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, невозможно установить сетевое соединение.