【问题标题】:adding a service reference to net.msmq wcf service添加对 net.msmq wcf 服务的服务引用
【发布时间】:2015-04-15 03:16:19
【问题描述】:

我正在尝试在 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) 请访问您有权访问的通信基础服务 检查您是否已在指定位置启用元数据发布 地址。有关启用元数据发布的帮助,请参阅 MSDN 文档位于 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流 错误 URI:http://localhost:9011/WCF_Service.svc 元数据包含 无法解决的参考: 'http://localhost:9011/WCF_Service.svc'。服务器没有提供 有意义的回复;这可能是由于合同不匹配造成的,a 会话过早关闭或内部服务器错误。HTTP GET 错误 URI:http://localhost:9011/WCF_Service.svc 出现错误 下载'http://localhost:9011/WCF_Service.svc'。请求

失败并显示错误消息:--“/”应用程序中的服务器错误。

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

这是我在添加服务引用时遇到的错误 -> net.msmq://localhost/WCF_Service.svc 然后我按“开始”

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

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

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

    What is "mexHttpBinding"?

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

    【讨论】:

    • 我试过了。它不起作用。我猜你的意思是使用 mex 并在 http 端点上添加引用,而不是尝试添加对 net.msmq 的引用。我已经尝试过了,我收到一条错误消息,上面写着“打开队列时发生错误:队列不存在或您没有足够的权限来执行该操作。”我尝试以管理员身份运行 Visual Studio,并确保已安装 msmq。
    • 是的,这就是我的意思。现在你的错误信息不同了,它说你没有与 MSMQ 交谈的权限。您需要确保应用程序池用户对 MSMQ 具有权限。
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多