Question

J'ai une application silverlight qui fonctionne parfaitement et peut accéder aux services WCF qui sont hébergés dans l'application silverlight elle-même. Le port qu'il utilise est 1794.

Quand je déploie vers d'autres serveurs (dev ou test ou mise en scène), l'application ne peut pas accéder à des services WCF.

Ceci est un extrait de mon ServiceReference.ClientConfig ressemble

<endpoint address="http://localhost:1794/MyWebService.svc"
                binding="customBinding" bindingConfiguration="CustomBinding_MyWebService"
                contract="ConfigMgmtServiceReference.MyWebService"
                name="CustomBinding_MyWebService" />

Mon dossier racine contient aussi le fichier clientaccesspolicy.xml.

Comment puis-je aller au-delà de cette question?

Était-ce utile?

La solution

Je soupçonne que la localhost:1794 serait l'origine du problème - lorsque l'application silverlight exécute sur une machine cliente localhost ne l'obtenir au serveur

.

La technique que je l'utilise pour éliminer les problèmes comme celui-ci est de définir par programme les points d'extrémité au moment de l'exécution. Les deux pièces d'information i besoin sont l'emplacement dans mon projet web du service (qui est connu à l'avance) et l'adresse (domaine) que l'application silverlight a été servi à partir (que je peux trouver).

    private void initEndpoint(ServiceEndpoint endPoint, string serviceName)
    {
        Uri hostUri = Application.Current.Host.Source;
        string wcfBaseUri = string.Format("{0}://{1}:{2}/WebServices/", hostUri.Scheme, hostUri.Host, hostUri.Port);

        endPoint.Address = new EndpointAddress(new Uri(wcfBaseUri + serviceName));
    }

Dans ce morceau de code, le /WebServices dossier est où mes services Web se trouvent dans mon application web. J'appelle alors la fonction comme ceci:

        LoggingServiceClient loggingService = new LoggingServiceClient();
        initEndpoint(loggingService.Endpoint, "LoggingService.svc");

ma configuration actuelle est un peu plus complexe que cela, parce que je veux aussi pouvoir passer outre cela et configurer manuellement les points d'extrémité, mais vous obtenez le point. En faisant cela, je suis en mesure de déployer à toutes sortes de configurations, avec les serveurs Web fonctionnant sur les ports impairs, et le silverlight-> bit webservice fonctionne juste à chaque fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top