2009-09-21 5 views
0

Mon problème est étroitement lié à celui-ci: How can I use .NET web services from non-standard ports?. Mon service Web s'exécute derrière un pare-feu de transfert de port, de sorte que les numéros de port signalés dans le document WSDL contiennent le port interne à numéro élevé. J'ai écrit une classe SoapExtensionReflector qui est capable de réécrire le document WSDL. Ainsi, une requête comme example.com/path/loginservice?wsdl est gérée correctement.Fix port serverice Web non standard sur contractRef et docRef

Cependant, cela ne gère pas la demande "disco": example.com/path/loginservice?disco. Cela renvoie un document XML comme ceci:

<discovery> 
    <contractRef ref="http://example.com:10092/loginservice.asmx?wsdl" docRef="http://example.com:10092/loginservice.asmx"/> 
    <soap address="http://example.com/path/loginservice.asmx" binding="q1:LoginServiceSoap"/> 
    <soap address="http://example.com/path/loginservice.asmx" binding="q2:LoginServiceSoap12"/> 
</discovery> 

Alors que les liaisons de savon ont été correctement réécrite par le SoapExtensionReflector, les URL contractRef et docRef ont le port de haut numéroté. Comment puis-je les réécrire aussi?

Répondre

1

finalement trouvé quelque chose. Créer des classes de proxy manuellement en utilisant svcutil après la migration de tout vers WCF. Je suppose que vous pourriez probablement faire la même chose en utilisant l'outil wsdl fourni avec les anciens services web asp.net, mais je n'ai pas essayé cela.

+0

Je n'ai pas trouvé une solution. Je suis passé à WCF. J'ai encore dû écrire des extensions pour corriger le problème de port, en utilisant WCFExtras. Cela nettoie le WSDL, mais j'ai toujours le numéro de port affiché sur la page Web .svc, bien que ce soit relativement inoffensif. –

Questions connexes