解决WCF“这可能是由于服务终结点绑定未使用 HTTP 协议造成的,这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致”异常

      最近对系统的架构进行优化,用WinForm模拟客户端调用WCF,在WCF起一个Bus,把接收到的消息推送到各个Sub端。

   本来很简单的调用关系,结果把WCF服务部署到IIS后,一直报“接收对 http://lenovo-y460:8099/Service.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。”异常,效果如下图所示:

   

   出异常了,用控制变量法对异常进行排除。

   排除过程如下:

    1.用WCF调试状态下的客户端调用ESB的Publish方法调用成功,证明ESB的推送是没有问题的;

   2.用WinForm调用部署在IIS上的WCF的测试方法(不包含bus.Publish方法)调用成功,证明WCF服务是没有问题的;

   3.用WinForm调用部署在IIS上的WCF的bus.Publish方法调用失败,报上述异常;

   4.用WinForm调用WCF调试状态下的bus.Publish方法调用成功。

   最终得出结果(度娘说是什么类没有序列化,狠狠的把我坑了):很可能是IIS的原因。

   既然WinForm可以调用WCF调试状态下的WSDL地址,为什么不能调用WCF部署在IIS上的WSDL地址?很可能是因为IIS的权限不够,解决方案如下:

   IIS管理器-->应用程序池-->选中目标应用池-->高级设置-->进程模型-->标识-->自定义账户-->设置-->输入本机Administrator级别的用户名、密码,配置如下:

   

   这个Bug调了3天,今天终于解决了,很有成就感。

   希望我的讲解能帮助大家进步。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值