0

我的问题与此密切相关:如何从非标准端口使用 .NET Web 服务?. 我的 Web 服务在端口转发防火墙后面运行,因此 WSDL 文档中报告的端口号包含内部高编号端口。我编写了一个能够重写 WSDL 文档的 SoapExtensionReflector 类。因此,像 example.com/path/loginservice?wsdl 这样的请求得到了正确处理。

但是,这不处理“迪斯科”请求: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 已经正确地重写了soap 绑定,但是contractRef 和docRef URL 具有高编号的端口。我怎样才能重写它们呢?

4

1 回答 1

1

终于想通了。将所有内容迁移到 WCF 后,使用 svcutil 手动创建代理类。我认为您可能可以使用旧 asp.net Web 服务附带的 wsdl 工具来做同样的事情,但我还没有尝试过。

于 2011-01-25T23:19:28.283 回答