找不到与绑定 NetTcpBinding 的端点的方案 net.tcp 匹配的基地址.基地址方案是 [http] [英] Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Base address schemes are [http]

查看:15
本文介绍了找不到与绑定 NetTcpBinding 的端点的方案 net.tcp 匹配的基地址.基地址方案是 [http]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 WCF 服务有这个配置,它在 IIS Express 端口号 50187 上运行.该服务托管在 Visual Studio 2017 的 IIS Express 上:

I have this configuration for my WCF service which runs on IIS Express port number 50187. The service is hosted on IIS Express of Visual Studio 2017:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="QCConsumerBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="50000000" maxBufferPoolSize="5242880" maxReceivedMessageSize="50000000" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="QCWCFService.QCService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="QCConsumerBinding" contract="QCWCFService.IQCService" />
      </service>
      <service name="QCWCFService.QCFinalService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="QCConsumerBinding" contract="QCWCFService.IQCFinalService" />
      </service>

      <service name="QCWCFService.CalibrationService">
        <endpoint address="service" binding="netTcpBinding" contract="QCWCFService.ICalibrationService" />
        <endpoint address="" binding="wsDualHttpBinding" contract="QCWCFService.ICalibrationService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8080/CalibrationService" />
            <add baseAddress="http://localhost:8081/CalibrationService" />
          </baseAddresses>

        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>          
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add scheme="http" binding="wsDualHttpBinding" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

但是当我尝试运行该服务时,它给出了这个异常:

But when I try to run the service it gives this exception:

System.InvalidOperationException: Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http].

虽然我有另一个与双 Http 绑定具有相同配置的应用程序,但它运行良好

While I have another application with the same configuration for Dual Http Binding which works perfectly

推荐答案

默认情况下,IIS express 不支持 Net.tcp 协议.带有 Nettcpbinding 的服务端点需要一个基于 NetTcp 协议的基地址.

By default, The IIS express doesn’t support Net.tcp protocol. The service endpoint with Nettcpbinding requires a base address based on NetTcp protocol.

<endpoint address="service" binding="netTcpBinding" contract="QCWCFService.ICalibrationService" />

虽然我们使用 Host Section 提供了一个 Nettcp 基地址,但它不起作用.这是因为 IIS express 使用自配置来提供基​​地址来运行当前项目.IIS express 的配置通常位于当前解决方案的 .vs 文件夹中,名为 applicationhost.config

如果我们在具有此配置的控制台应用程序中运行此项目,它将起作用.因此,我们应该为 Nettcp 协议提供一个基地址.这可以在 IIS 中完成.
1.为net.tcp协议启用windows功能.

2.在网站上添加Net.tcp支持.

3.在站点绑定模块中添加net.tcp协议.

为网站添加net.tcp协议的详情请参考以下内容.
启用可靠会话时 WCF ContractFilter 不匹配
如果问题仍然存在,请随时告诉我.

Although we provide a Nettcp base address by using the Host Section, It won’t work. This is due to the fact IIS express use self-configuration to provide a base address to run the current project. The configuration of IIS express usually located in the .vs folder of the current Solution, called applicationhost.config

If we run this project in a console application with this configuration, it will work. Thereby we should provide one base address with Nettcp protocol. This can be completed in IIS.
1. Enable windows feature for net.tcp protocol.

2. Add Net.tcp support on the website.

3. Add net.tcp protocol in site binding module.

Please refer to the below for details of adding net.tcp protocol to a website.
WCF ContractFilter Mismatch when enabling Reliable Session
Feel free to let me know if the problem still exists.

这篇关于找不到与绑定 NetTcpBinding 的端点的方案 net.tcp 匹配的基地址.基地址方案是 [http]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆