我有一个简单的服务,我部署在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而不是机器名称?