WCF 部署时,soap:address location 显示的是电脑名,而不是ip地址

部署WCF服务时,发现soap:address location 和wsdl:import location 显示是电脑名,而不是ip地址,这样外面公司的人就无法下载剩下的wsdl,post也会往错误的地址发。

搜半天,网上居然没有人正确的解决这个问题,msdn上MS公司的人说用external schema location,太糟糕了。

终于搞出来了,应该在web.config里加上  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

multipleSiteBindingsEnabled="true" 一定要设置成true

试一试true和false很快就能发现差别,

true

soap:address location 和wsdl:import location 显示和url里面的ip或者域名是一致的

false 

只显示电脑名。

 

补充:multipleSiteBindingsEnabled 是。net framework 4里面支持的特性,如果版本低于4,例如3.5 那么就要根据IIS binding来设置baseAddress,具体参见我的另一篇博客

WCF的配置文件的baseAddress的真正含义

http://blog.csdn.net/cjq1234/article/details/9200457

转载于:https://www.cnblogs.com/mschen/p/4255924.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WCF路由是一种将消息从一个端点路由到另一个端点的机制,可以在WCF服务中使用,也可以在非WCF环境中使用。在SOAP协议下,WCF路由可以通过以下步骤实现: 1. 创建一个路由服务,并为其配置路由表。路由表定义了输入消息如何被路由到目标服务。 2. 配置源服务,使其将消息发送到路由服务。可以通过配置终结点来实现。 3. 配置目标服务,使其能够接收路由服务转发的消息。同样可以通过配置终结点来实现。 4. 测试路由服务是否能够正确地将消息路由到目标服务。可以使用WCF Test Client或其他SOAP客户端来进行测试。 下面是一个简单的WCF路由示例,以演示如何实现SOAP协议下的WCF路由: 1. 创建一个为“RoutingService”的路由服务,并为其配置路由表。在路由表中,将输入消息路由到目标服务的终结点上。 ```xml <system.serviceModel> <services> <service name="System.ServiceModel.Routing.RoutingService"> <endpoint address="" binding="basicHttpBinding" contract="System.ServiceModel.Routing.IRequestReplyRouter" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <routing> <filters> <filter name="MyFilter" filterType="MatchAll" /> </filters> <filterTables> <filterTable name="MyFilterTable"> <add filterName="MyFilter" endpointName="MyEndpoint" /> </filterTable> </filterTables> </routing> <client> <endpoint name="MyEndpoint" address="http://localhost:8000/MyService" binding="basicHttpBinding" contract="IMyService" /> </client> </system.serviceModel> ``` 2. 配置源服务的终结点,使其将消息发送到路由服务。 ```xml <system.serviceModel> <services> <service name="MyService"> <endpoint address="" binding="basicHttpBinding" contract="IMyService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <client> <endpoint name="RoutingEndpoint" address="http://localhost:8001/RoutingService" binding="basicHttpBinding" contract="System.ServiceModel.Routing.IRequestReplyRouter" /> </client> </system.serviceModel> ``` 3. 配置目标服务的终结点,使其能够接收路由服务转发的消息。 ```xml <system.serviceModel> <services> <service name="MyService"> <endpoint address="" binding="basicHttpBinding" contract="IMyService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel> ``` 4. 测试路由服务是否能够正确地将消息路由到目标服务。 可以使用WCF Test Client或其他SOAP客户端来测试路由服务是否能够正确地将消息路由到目标服务。在测试之前,确保源服务和目标服务都已启动,并且路由服务已被正确配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值