如标题中所述,我遇到了问题。一些背景信息。
有一个这样的 URLhttps://external_server.something.xy/SomeService/Something
通过反向代理暴露给外界。
- 反向代理剥离 HTTPS 并将流量作为纯 HTTP 转发到 WCF 服务,并将 HTTPS 应用于响应。
- 绑定是 basicHttpBinding (with
<transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />
)。
由于这个和一些合同原因,静态 WSDL 文件 (Something.wsdl) 被分发给客户端。唉,仍然有很多代码可以在没有分布式静态 WSDL 文件的情况下检索 WSDL,然后动态生成调用(无论出于何种原因)。
如果我在配置文件中设置,<serviceMetadata httpGetEnabled="true" externalMetadataLocation="../Something.wsdl"/>
客户将受到HTTP 307 临时重定向的欢迎。
无论如何,通过一些研究,我发现设置 IIS 主机标头也会影响同一 IIS 上的许多其他应用程序。这是一个不可行的解决方案。我可以在 web.config 中配置什么,还是应该在服务器或反向代理上调查 URL 重写方案?
额外的好处是,如果我可以设置帮助页面上显示的 URL,使其不显示内部服务器(这样链接也可以工作!)。