【发布时间】:2011-02-15 17:40:11
【问题描述】:
我有一个部署到 Azure 的简单服务。可通过以下方式访问:
http://xxxxxxxxxxxxxxxxxxxxxxx.cloudapp.net/MyTestService.svc
WSDL 的 URL 使用内部机器名而不是公共 DNS:
svcutil.exe http://rd001520d328923a/MyTestService.svc?wsdl
显然,WSDL 不能从机器外部访问。
我知道如果您在 IIS 中运行它,或者如果您知道服务的 url,则可以更改一些内容。例如,更改 <serviceMetadata> 配置以指定 httpGetUrl 属性,但这不起作用,因为我必须包含绝对 URL。使用相对 URL,它仍然使用内部机器名称。真正的问题是 WSDL 包含带有机器名称的 URL 引用,因此使其无用。
有两种不合标准的解决方法:
有人建议我可以获取 WSDL,对其进行编辑以修复 URL,然后将其上传,以便可以从不同的 URL 访问它。
我发现 2010 年初的修补程序可用,但必须有更好的方法。
如何使用面向公众的 DNS 而不是机器名称来解决这个问题?
【问题讨论】: