使用NetTcpBinding,WCF服务未能被激活
我的WCF采用的是NetTcpBinding,使用时就会报错,换成BasicHttpBinding,就一切正常
The requested service, 'net.tcp://wcf.xxxxx.com:21336/GameService.svc' could not be activated. See the server's diagnostic trace logs for more information.
这时我用浏览器访问一下SVC,客户端再请求它又好了,但是隔几分钟不访问,错误又出现
=====================================================================
这个问题困扰我好多天,网上也是找遍了没有解决办法(现在想其实思考方向错了,以为配置有问题,其实是一个WCF服务依赖注入初始化的问题)
关键时刻还是得靠 StackOverflow,随便一搜就找到解决办法了
Autofac WcfIntegration - WCF client service can not be activated when communicating over net.tcp
原来,我用到了Autofac.Integration.Wcf 来做WCF服务的依赖注入
<%@ ServiceHost Language="C#" Debug="true" Service="Wettery.WcfContract.Services.IGameService, Wettery.WcfContract.Services" Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %>
依赖关系的建立等初始化操作是在 Global.asax 的 Application_Start
但是 Global 仅适用 Http 绑定,TCP 绑定可采用另一种方法:
在 App_Code 下随便建一个类,添加一个静态方法 public static void AppInitialize() ,服务启动时,这个方法将被自动执行
注意:包含AppInitialize 静态方法的类只能放在App_Code下,并且是此方法必须唯一
更详细参考: