Моя проблема тесно связана с этим: How can I use .NET web services from non-standard ports?. Мой веб-сервис работает за брандмауэром, перенаправляющим порт, поэтому номера портов, о которых сообщается в документе WSDL, содержат внутренний порт с высоким номером. Я написал класс SoapExtensionReflector, который может переписать документ WSDL. Поэтому запрос, например example.com/path/loginservice?wsdl, обрабатывается правильно.Исправить нестандартный порт веб-сервера на contractRef и docRef
Однако это не относится к запросу «disco»: example.com/path/loginservice?disco. Это возвращает XML-документ, как это:
<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>
Хотя мыло переплеты были должным образом переписаны в SoapExtensionReflector, что URL-contractRef и docRef имеет порт с большим номером. Как я могу их переписать?
Я не нашел исправления. Я перешел на WCF. Мне все еще приходилось писать расширения, чтобы исправить проблему с портом, используя WCFExtras. Это очищает WSDL, но у меня все еще есть номер порта, отображаемый на веб-странице .svc, хотя он довольно безвреден. –