MSMQ WCF托管在IIS中

时间:2014-03-24 18:16:03

标签: wcf iis msmq

我遇到以下情况 - 我有两个网络应用程序 - A B 。它们都在同一台计算机上运行。 B 正在托管 netMsmqBinding WCF服务。此外, B 的应用程序池刚刚自行回收。 A 调用 B 的WCF服务。我看到消息已经到达我创建的私有MSMQ队列。但是,在我不浏览* .svc网址之前,消息不会通过 B 继续进行。 我错过了这项技术所需的东西吗?实现这种功能的干净方法是什么? 这些是我正在使用的配置。如果我错过了一些有用的信息,请告诉我,我会提供: 服务(B):

<system.serviceModel>
    <services>
        <service name="MyProject.Web.Services.EmsListener">
            <endpoint address="net.msmq://localhost/private/myQueue"
                      binding="netMsmqBinding" bindingConfiguration="MyMsmqBinding"
                      contract="MyProject.Abstraction.IEmsListener">
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
    </services>




 <netMsmqBinding >
                <binding name="MyMsmqBinding"
                         durable="true"
                         receiveRetryCount="2"
                         maxRetryCycles="2"
                         retryCycleDelay="00:01:00"
                         receiveErrorHandling="Move" >
                    <security mode="None">
                        <message clientCredentialType="None"/>
                        <transport msmqAuthenticationMode="None" msmqProtectionLevel="None"  />
                    </security>
                </binding>
            </netMsmqBinding>

客户(A):

    <system.serviceModel>
        <bindings>
<netMsmqBinding>
                <binding name="MyBinding ">
                    <security mode="None" />
                </binding>
            </netMsmqBinding>
        </bindings>
        <client>        
            <endpoint address="net.msmq://localhost/private/myQueue" binding="netMsmqBinding"
                bindingConfiguration=" MyBinding " contract="EmsListener.IEmsListener"
                name=" MyBinding " />

        </client>
    </system.serviceModel>

提前致谢:)

2 个答案:

答案 0 :(得分:0)

这可能是因为IIS在回收后没有启动您的应用程序。

可能的解决方案是配置auto-start。然后,IIS将立即启动您的服务,而无需等待第一个请求。

答案 1 :(得分:0)

Imortist的可能解决方案!!

但首先您需要将AppFabric添加到您的国际空间站,然后您需要确保在游泳池提前设置中有“启动模式”选项。

注意:在我的Windows 7 IIS7没有工作,但在我的Windows服务器2012 R2 IIS8工作正常