添加对net.msmq wcf服务的服务引用

时间:2015-02-13 23:27:13

标签: c# wcf

我试图在visual studio中为我的wcf应用添加服务引用。 我可以做各种绑定,如net.pipe和basichttp ... 但是对于net.msmq绑定,我收到错误

以下是我的web.config的相关部分:

  <system.serviceModel>
    <bindings>
      <netMsmqBinding>
        <binding name="netMsmqBinding" exactlyOnce="false">
          <security mode="None"></security>
        </binding>
      </netMsmqBinding>
      <basicHttpBinding>
        <binding name="basicHttp" />
      </basicHttpBinding>
    </bindings>

    <behaviors>
      <endpointBehaviors>
        <behavior name="WCF_ServiceSample.WCF_ServiceBehavior" />
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="serviceBehavior">
          <serviceMetadata />
          <serviceDebug />
          <serviceDiscovery />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <services>
      <service behaviorConfiguration="serviceBehavior" name="WCF_ServiceSample.WCF_Service">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:4000/Services/" />
            <add baseAddress="net.msmq://localhost/Services/" />
          </baseAddresses>
        </host>

        <endpoint address="mex" behaviorConfiguration="WCF_ServiceSample.WCF_ServiceBehavior"
          binding="mexHttpBinding" bindingConfiguration="" name="mex_http"
          contract="IMetadataExchange" />

        <endpoint address="AdventureWorksServiceHttp" binding="basicHttpBinding" bindingConfiguration=""
          name="basicHttpEndpt" contract="WCF_ServiceSample.WCF_Service" />

        <endpoint address="AdventureWorksServiceNetMsmq"
          binding="netMsmqBinding" bindingConfiguration="netMsmqBinding"
          contract="WCF_ServiceSample.WCF_Service" />

      </service>
    </services>
  </system.serviceModel>

以下是我通过wcf客户端运行服务时出现的错误:

  

错误:无法从中获取元数据   http://localhost:9011/WCF_Service.svc如果这是Windows(R)   请访问您的Communication Foundation服务   检查您是否已在指定的位置启用元数据发布   地址。有关启用元数据发布的帮助,请参阅   MSDN文档在   http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流   错误URI:http://localhost:9011/WCF_Service.svc元数据包含一个   无法解决的参考:   &#39; http://localhost:9011/WCF_Service.svc&#39 ;.服务器没有提供   有意义的答复这可能是由合同不匹配造成的,a   过早会话关闭或内部服务器错误.HTTP GET错误   URI:http://localhost:9011/WCF_Service.svc出错了   下载&#39; http://localhost:9011/WCF_Service.svc&#39;。请求

     

失败并显示错误消息: - &#39; /&#39;中的服务器错误应用

     

无法找到与scheme net.msmq匹配的基地址   绑定NetMsmqBinding的端点。注册的基地址方案   是[http]。描述:期间发生了未处理的异常   执行当前的Web请求。请查看堆栈跟踪   有关错误及其来源的更多信息   代码。

这是我在添加服务引用时遇到的错误 - &gt; net.msmq://localhost/WCF_Service.svc 然后我按&#34;去&#34;

  

无法识别URI前缀。 MetadataExchangeClient实例   无法初始化,因为没有绑定可用于方案   &#39; net.msmq&#39 ;.您可以在构造函数中提供Binding,也可以指定   configurationName。参数名称:scheme如果定义了服务   当前的解决方案,尝试构建解决方案并添加服务   再次参考。

1 个答案:

答案 0 :(得分:1)

添加mex绑定,因为这将允许您添加代理引用,然后您可以使用net.msmq绑定来执行操作。

What is "mexHttpBinding"?

https://msdn.microsoft.com/en-us/library/aa967390(v=vs.110).aspx