我在Windows 7/IIS 7.5上运行,并设置了一个web服务来使用net。但是当我尝试使用HTTP访问服务时,我得到以下错误:
协议网。
没有hostdtransportconfiguration类型的实现注册。[InvalidOperationException: The protocol 'net.msmq' does not have an implementation of HostedTransportConfiguration type registered.]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
我设置了http和net。MSMQ绑定在它所在的站点上,并且在站点和应用程序上都启用了两个协议("http,net.msmq")。
我看了文章调试丢失的hostdtransportconfiguration类型,并运行了所有的命令,但似乎没有帮助;执行sc query netmsmqactivator show:
SERVICE_NAME: netmsmqactivator
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
应用程序池下运行的应用程序现在是针对。net框架v2.0,但如果我改变应用程序池目标。net框架v4.0(并作出适当的改变服务的web。配置以删除重复的configSection定义),我能够很好地看到WSDL。
据我所知,web服务不是针对。net Framework v4.0运行的;我的一个同事(也在运行Windows 7)实际上是可以用的,但由于种种原因,目前还不能比较设置。
另一个注释,可能相关也可能不相关:在尝试通过HTTP访问服务并得到上述错误后,刷新服务将导致:
已添加具有相同键的项
[ArgumentException: An item with the same key has already been added.]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
这需要一个应用池回收来清除。
我没有使用网络的经验。所以我不知道我可能遗漏了什么相关信息;弄清楚了:不确定是什么搞糟了,但结果是卸载然后重新安装WCF非http激活修复了它。
如果你在IIS中托管一个MSMQ/WCF服务,你必须告诉IIS允许网络。msmq协议。