我一直在拉我的头发试图弄清楚这里发生了什么......
我们有一个尝试部署到服务器的应用程序,我们需要更改它所使用的 SOAP 服务的端点。最初添加服务时,它在 Web 配置文件中创建了一个条目:
<endpoint address="http://subdomain.example.com/path/to/mapserver" binding="basicHttpBinding" bindingConfiguration="MapServerBinding" contract="ServiceReference1.MapServerPort" name="MapServerPort" />
我们正在尝试将其更改为本地地址,以避免在使用服务时将其传出到互联网并返回(为了效率和防火墙问题):
<endpoint address="http://serverAlias/path/to/mapserver" binding="basicHttpBinding" bindingConfiguration="MapServerBinding" contract="ServiceReference1.MapServerPort" name="MapServerPort" />
在服务器上更改此配置值不会导致其查找位置发生变化,它仍会转到 subdomain.example.com。
我尝试过的事情:
- 创建一个运行相关代码位的控制台应用程序,然后在配置文件中更改其端点(按预期适用于该应用程序,并证明该服务器可以连接到 SOAP 服务)
- IISReset(不起作用,配置的值仍然不被接受)
- 更改 Web 配置中的其他内容以确保确实重新加载了配置文件(我更改的每个设置都会正确影响行为,端点更改除外)
- 将相同的应用程序部署到可比较的服务器(在 DMZ、IIS 7.5 中)并更改该实例的配置(该实例按预期更改)
- 更改了 hosts 文件以将对 subdomain.example.com 的调用重定向到内部 IP(这可行,但感觉像是解决它的一种 hacky 方法)
- 重新启动服务器以查看是否会清除它拥有的任何神奇缓存(没有改变行为)
任何想法可能导致端点保持其初始配置?
这是配置文件的更完整的摘录(请注意,我们可以在其他服务器上随意更改端点地址,只是生产服务器似乎忽略了它)。根据 Brian 将所有绑定名称匹配为相同的建议进行了更改,最初 [binding name=""] 和 [endpoint bindingConfiguration=""] 都是“MapServerBinding”,否则与原始配置相同。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MapServerPort" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://serverAlias/path/to/mapserver"
binding="basicHttpBinding" bindingConfiguration="MapServerPort"
contract="ServiceReference1.MapServerPort" name="MapServerPort" />
</client>
</system.serviceModel>