2009-11-03 4 views
3

Mon wsdl a mis un mauvais domaine dans l'adresse, Comment y remédier?Comment changer l'adresse de mon wsdl

- <wsdl:service name="XWebService"> 
- <wsdl:port name="XServiceSoap" binding="tns:XWebServiceSoap"> 
    <soap:address location="https://machine.wrongdomain.com.br/webservices/MapleStoryWebService.asmx" /> 
    </wsdl:port> 
- <wsdl:port name="XWebServiceSoap12" binding="tns:XWebServiceSoap12"> 
    <soap12:address location="https://machine.wrongdomain.com.br/webservices/XWebService.asmx" /> 
    </wsdl:port> 
- <wsdl:port name="XWebServiceHttpGet" binding="tns:XWebServiceHttpGet"> 
    <http:address location="https://machine.wrongdomain.com.br/webservices/MapleStoryWebService.asmx" /> 
    </wsdl:port> 
- <wsdl:port name="XWebServiceHttpPost" binding="tns:XWebServiceHttpPost"> 
    <http:address location="https://machine.wrongdomain.com.br/webservices/XWebService.asmx" /> 
    </wsdl:port> 
    </wsdl:service> 

Le domaine est vrai comme https://machine.goodDomain.com.br

Répondre

4

L'adresse est tirée de l'URL utilisée pour accéder au WSDL. Si c'est différent du serveur que vous souhaitez utiliser, vous pouvez le modifier en créant une classe qui étend SoapExtensionReflector. Voici un exemple d'article sur la façon de modifier l'URL:

http://blogs.msdn.com/kaevans/archive/2005/11/16/493496.aspx

+0

je devrais n'est pas nécessaire, parce que j'ai une autre machine avec la même configuration et il fonctionne bien dans cela. Pourquoi??? –

+1

Votre proxy généré a une propriété Url. Par défaut, ceci est rempli avec l'URL trouvée dans le fichier wsdl. Cependant, vous pouvez le remplacer si l'adresse fournie par le WSDL a été modifiée –

0

La réponse initiale est correcte. L'URL par défaut dans le fichier WSDL dépend de l'URL utilisée pour accéder au fichier WSDL. La façon dont mon équipe a géré les changements d'URL de service dans le passé (par exemple, passer d'un développement à un environnement de test ou de production) est d'utiliser wsdl.exe pour générer un proxy de code pour votre service Web (un proxy est en fait créé en créant une référence web ou de service, mais n'est pas affiché dans Visual Studio par défaut), vous pouvez éditer la classe proxy générée pour lire l'URL du service (??) où vous voulez le stocker - base de données, fichier de configuration

0

Pourquoi ne pas simplement modifier manuellement l'adresse dans le fichier WSDL à ce qu'elle devrait être?

Si le WSDL est généré par un autre outil, alors laissez-nous savoir comment il est généré et peut-être que nous pouvons vous aider. Sinon, il n'y a pas de loi contre la modification du fichier généré en fonction de vos besoins. Si tout ce qui ne va pas avec le WSDL pour l'environnement des utilisateurs d'origine est que l'URL est incorrecte, il est parfaitement légitime de modifier l'URL directement.

1

Une autre option est d'utiliser le module URL IIS Rewrite (http://www.iis.net/downloads/microsoft/url-rewrite)

Première place - capturer la sortie de XWebService.asmx WSDL et l'enregistrer comme un fichier HTML (par exemple wsdl.htm).

Modifier ce fichier et modifier l'emplacement à l'autre adresse

... de thishost.domain.com:

- <wsdl:port name="XWebServiceHttpPost" binding="tns:XWebServiceHttpPost"> 
    <http:address location="http://thishost.domain.com/XWebService.asmx" /> 
    </wsdl:port> 

... à thathost.domain.com:

- <wsdl:port name="XWebServiceHttpPost" binding="tns:XWebServiceHttpPost"> 
    <http:address location="http://thathost.domain.com/XWebService.asmx" /> 
    </wsdl:port> 

Dans IIS - trouver l'URL R icône ewrite dans le site Web/Vue des fonctionnalités virtuelle. Puis cliquez sur Ajoutez la (les) règle (s) et choisissez Inbound Rule - Règle vide. Avec la règle - nommez-le de manière appropriée et définissez le modèle correspondant à l'URL du service Web qui recevra la demande WSDL. Pour RegEx:

(.*)XWebservice.asmx 

Pour les conditions correspondance {QUERY_STRING} à WSDL et {} REQUEST_METHOD à GET.

Pour l'action - mis à Rewrite (c'est donc transparent pour le client) et choisissez le fichier que nous avons économisé comme précédemment (wsdl.htm).

Cela ajoute également une nouvelle section rewrite à la section system.webServer du web.config

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="WSDL Rewrite" stopProcessing="true"> 
       <match url="(.*)XWebService.asmx" /> 
       <conditions> 
        <add input="{QUERY_STRING}" pattern="WSDL" /> 
        <add input="{REQUEST_METHOD}" pattern="GET" /> 
       </conditions> 
       <action type="Rewrite" url="wsdl.htm" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
Questions connexes