c# - 找不到与具有绑定 NetTcpBinding 的终结点的方案 net.tcp 匹配的基地址。基地址方案是 [http]
问题描述
我的 WCF 服务具有此配置,该服务在 IIS Express 端口号 50187 上运行。该服务托管在 Visual Studio 2017 的 IIS Express 上:
<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>
但是当我尝试运行该服务时,它给出了这个异常:
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 绑定应用程序,但它运行良好
解决方案
默认情况下,IIS express 不支持Net.tcp
协议。服务端点Nettcpbinding
需要基于NetTcp
协议的基地址。
<endpoint address="service" binding="netTcpBinding" contract="QCWCFService.ICalibrationService" />
尽管我们Nettcp
使用 提供了基地址Host Section
,但它不起作用。这是因为 IIS express 使用自配置来提供一个基地址来运行当前项目。IIS express 的配置通常位于当前解决方案的 .vs 文件夹中,称为
如果我们在具有此配置的控制台应用程序中运行此项目,它将起作用。因此,我们应该为 Nettcp 协议提供一个基地址。这可以在 IIS 中完成。
1. 启用协议的windows功能。
2.在网站上添加支持。
3. 添加协议。有关将协议添加到网站
的详细信息,请参阅以下内容。applicationhost.config
net.tcp
Net.tcp
net.tcp
site binding module
net.tcp
启用可靠会话时 WCF ContractFilter 不匹配
如果问题仍然存在,请随时告诉我。
推荐阅读
- go - 使用指向具有反射的结构的指针切片
- maven - maven-surefire 和 tycho-surefire 之间的行为不一致,jacoco 没有生成报告
- c# - C# 由于“错误 307 临时重定向”,我陷入了循环
- c# - C# 在不使用 Temp 或更改 Tempfolder 的情况下创建 .Zip 文件
- java - 如何在 RecyclerView 中设置 RelativeLayoutManager 而不是使用 LinearLayoutManager
- bash - (standard_in) 1:应该工作的脚本语法错误
- redis - 有没有办法知道redis数据库是否正在使用?
- php - 使用 eloquent 关系计算注销时间
- css - CSS Keyframe 我似乎无法删除工件
- javascript - Django:通过1-1关系更改扩展现有模型的模型的数据库记录