我有几个使用 Visual Studio 2010 用 c# 编写的 Web 服务。我还有一个 Apigee 帐户,并通过包括 API 密钥作为参数的 Apigee URL 访问 Web 服务。
访问 Web 服务的 WSDL(通过 Apigee),我使用类似于以下的 URL:
https://myapi-prod.apigee.net/v1/myapi/Path/To/MyWebService.asmx?wsdl&apikey= {myapikey}
WSDL 成功返回,但在绑定信息(如下)下,显示了 Web 服务的直接路径。最初,我没有选择这个,但是当添加防火墙规则以阻止直接访问我们的服务器(示例中为 api.mydomain.com)时,我当然阻止了人们使用 WSDL 的任何请求。
我的问题是如何更改 WSDL 中的地址位置?拥有像 Apigee 这样的服务只是保护 WSDL 没有什么意义。
<wsdl:service name="MyWebService">
<wsdl:port name="MyWebServiceSoap" binding="tns:MyWebServiceSoap">
<soap:address location="https://api.mydomain.com/Path/To/MyWebService.asmx" />
</wsdl:port>
<wsdl:port name="MyWebServiceSoap12" binding="tns:MyWebServiceSoap12">
<soap12:address location="https://api.mydomain.com/Path/To/MyWebService.asmx" />
</wsdl:port>
<wsdl:port name="MyWebServiceHttpGet" binding="tns:MyWebServiceHttpGet">
<http:address location="https://api.mydomain.com/Path/To/MyWebService.asmx" />
</wsdl:port>
<wsdl:port name="MyWebServiceHttpPost" binding="tns:MyWebServiceHttpPost">
<http:address location="https://api.mydomain.com/Path/To/MyWebService.asmx" />
</wsdl:port>
</wsdl:service>