2011-10-08 3 views
0

J'ai été confronté à un problème avec un service Domainservice WCF RIA toute la journée. Je suis en train d'écrire une bibliothèque de services WCF RIA, qui est déployée sur Windows Azure. J'y accède via un Silverlight et un Windows Phone 7 Client. J'ai deux projets ASP.NET en tant que deux rôles Web dans mon application Cloud, qui agissent comme deux points de terminaison différents.WCF RIA donne EndpointNotFoundException dans Azure lors de l'accès avec WP7

Le premier fournit un accès via SSL pour le client Silverlight.

Le second est un point de terminaison simple, sans authentification pour le client WP7. Il fonctionne sur le port 8080.

Sur mon cassini local tout fonctionne bien. Je peux accéder au service avec les deux clients. Dans le cloud, je ne peux utiliser que le client Silverlight. Lorsque je tente d'accéder au service avec l'application WP7 je reçois:

System.ServiceModel.EndpointNotFoundException wurde nicht behandelt. Message=There was no endpoint listening at http://myapp.cloudapp.net:8080/Services/MyRIAServiceLib-Web-MyService.svc/soap that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

L'Exception interne est de type System.Net.WebException et dit:

The remote server returned and error: NotFound

J'ai ajouté un ServiceReference automatisé à mon WP7 App pour se connecter au service WCF. Lorsque je le fais, VS2010 reconnaît avec succès le service et génère le code pour le rendre utilisable. Cela doit signifier que le service est disponible et peut être trouvé, non? Quand je vais à http://myapp.cloudapp.net:8080/MyRIAServiceLib-Web-MyService.svc par le navigateur, je peux voir l'habituel "Vous avez créé un service." - Page.

J'ai ajouté toutes les DLL en tant que copies locales définies sur true, ce qui pourrait manquer dans le cloud, mais peut-être que j'ai raté certains. Mon web.config ressemble à ceci:

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

Toute aide s'il vous plaît? Je suis coincé et j'ai lu et cherché sur ce problème pendant des heures.

Je peux accéder à la machine Azure avec RDP. Comment puis-je déboguer/tracer ce problème? Je serai heureux d'utiliser les Traces Fiddler/WCF, si quelqu'un pouvait me conduire de la bonne façon.

Répondre

0

Cela semblait être une erreur aléatoire, qui a probablement été causée par le fait de ne pas récupérer une connexion au service (même si elle était accessible). L'actualisation de la connexion à plusieurs reprises a finalement supprimé l'exception (cela peut prendre de quelques minutes à une journée complète).

1

Check 2 choses:

1) Assurez-vous que votre proxy est correctement configuré.

2) Si vous utilisez SSL, assurez-vous d'avoir installé les certificats sur le téléphone/émulateur.

L'erreur que vous voyez est générique wcf parler pour ne peut pas établir une connexion réseau.

+0

Il semblait être une erreur aléatoire, car il a disparu par lui-même sans changer la configuration ou le code. Comme je l'ai décrit dans la question, j'ai eu une connexion au service via l'assistant de service dans VS. Et je n'ai pas utilisé de SSL pour le téléphone (et j'avais aussi un point de terminaison installé pour ne pas utiliser le protocole SSL). – Torsten