找不到与scheme net.tcp匹配的基址

当我尝试设置双工模式通道时,我已将文件传输服务从basicHttpBinding移动到netTcpBinding。 我还启动了net.tcp端口共享服务。

我目前在dev并且在xp框上自我托管,直到我们将应用程序移动到开发服务器。 所以,就目前而言,我无法访问IIS。

在配置我的服务之后:

         

而且,我的约束如下:

         

当我正确浏览到SVC文件时,我得到了以下错误:

无法找到与绑定NetTcpBinding的端点匹配scheme net.tcp的基址。 注册的基地址方案是[http]。

在线阅读表明,为了解决这个问题,我需要将net.tcp绑定添加到IIS中应用程序的绑定。 但是,如果我是自托管并且无法访问IIS,我该怎么办? 顺便说一句,如果您正在阅读此内容并“执行”拥有IIS,请执行以下操作:右键单击IIS中的虚拟目录/应用程序 – >管理应用程序 – >高级设置。 并且,在Enabled Protocols部分中,添加net.tcp。

有任何想法吗?


更新:我以为我有它工作,但它仍然没有工作。 这是我现在拥有的:我仍然得到“找不到与scheme net.tcp匹配的基地址”错误。 我已经更改了所有基地址以反映您的建议。 这就是我现在拥有的:

            

我用“net.tcp:// localhost:2544”和“net.tcp:// localhost:8001”尝试了这个。 我是否需要在防火墙设置中添加(允许)某些内容? 还有其他建议吗?

这是我的App.config文件中的filetransferservice的mexTcpBinding:

      

我仍然无法在我的网络应用程序中引用我的FileTransferServiceClient。

再次感谢。

您只需要为服务定义基地址 (而不是整个地址),然后在服务端点中定义其余地址。 你在filetransfer.svc文件末尾的地址不是有效的基地址(它确实是一个文件地址)

          

有了这个,并使用自托管,您的服务将在完整的地址提供:

 net.tcp://localhost:8001/project/filetransfer 

由于这是net.tcp并且您是自托管的,因此根本不需要svc文件。

更新:如果您希望能够获取net.TCP基地址的元数据,则需要在部分中公开这样的net.Tcp MEX端点:

   

错误(WCF): 无法找到与绑定NetTcpBinding的端点匹配scheme net.tcp的基址。 注册的基地址方案是[http]。

步骤1:注意WAS(Windows进程激活服务)或非http协议支持仅受以下平台支持:•Windows Vista•Windows 7•Windows Server 2008

  1. 转到打开或关闭Windowsfunction
  2. 转到Microsoft .NET Framework 3.5
  3. 检查Windows Communication Foundation HTTP激活
  4. 检查Windows Communication Foundation非HTTP激活

步骤2:IIS> WCF主机网站>管理应用程序>高级设置>启用协议>将值设置为HTTP,NET.TCP

IIS中“启用协议”条目中的空格=>选择虚拟目录/应用程序=>高级设置=>启用协议。 例如http,net.tcp 。 (协议文本之间的空格

这应该是http,net.tcp (即协议文本之间没有空格)

对于未来的读者。

确保您没有使用IIS-Express。

这是我的“陷阱”。

参考:

http://www.iis.net/learn/extensions/introduction-to-iis-express/iis-express-faq

  Q: Does IIS Express support non-HTTP protocols such as net.tcp or MSMQ? A: No. IIS Express only supports HTTP and HTTPS as its protocol. 

这是Visual Studio和web.csproj(或类似)属性和“Web”左侧选项卡下的属性。 有一个名为“使用IIS Express”的复选框。 取消选中。

执行此操作后,您仍然必须转到IIS(7)和“http,net.tcp”以获取“启用的协议”(如此处其他答案中所述)

此外,如果您收到命名管道特定错误。

无法找到与绑定NetNamedPipeBinding的端点匹配scheme net.pipe的基址。

然后,您需要将“net.pipe”添加到列表中。

例:

HTTP,的net.tcp,net.pipe

另请参阅下面的命名管道特定错误。

将WCF配置为IIS7上托管的命名管道

另外:检查这些相应的Windows服务(命名管道或tcp或两者)

(命名管道窗口服务)

 NetPipeActivator Net.Pipe Listener Adapter Receives activation requests over the net.pipe protocol and passes them to the Windows Process Activation Service. 

(tcp windows服务)

 NetTcpActivator Net.Tcp Listener Adapter Receives activation requests over the net.tcp protocol and passes them to the Windows Process Activation Service. 

经过大量的解决方案..我在这个博客中找到了最终的解决方案 ..但是我将在这里解释整个过程..你需要按照以下步骤..

步骤1 🙁 Windows进程激活服务)或非http协议支持仅受以下平台支持:•Windows Vista•Windows 7•Windows Server 2008

  • 转到打开或关闭Windowsfunction
  • 转到Microsoft .NET Framework 3.5
  • 检查Windows Communication Foundation HTTP激活
  • 检查Windows Communication Foundation非HTTP激活

步骤2: IIS> WCF主机网站>管理应用程序>高级设置>启用协议>将值设置为http,net.tcp

在第2步完成后检查您的问题是否已解决..如果不是,请按照以下步骤操作

步骤3:administrator-level Command Prompt window ,运行以下命令。

 %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='8082:*'] 

重新启动IIS一次,否则您现在可能Failed to map the path '/'exception

您的应用程序提前设置将如下所示

在此处输入图像描述

请从控制面板 – >程序 – >打开或关闭窗口 – >function – >添加function – > .net框架安装“非Http激活”窗口组件 *function – > Wcf激活 – >非Http激活。

对于Windows 10
步骤1:转到打开和关闭Windowsfunction> .Net Framework 4.6高级服务> WCF服务> TCP激活

步骤2:IIS> WCF主机网站>管理应用程序>高级设置>启用协议>将值设置为net.tcp,http

步骤3:使用管理权限打开命令控制台>键入iisreset

我有同样的问题(环境:Win7 / IIS7.5 .NET4),我通过appcmd.exe配置绑定解决了它,可从目录“c:\ Windows \ System32 \ inetsrv”获得

“appcmd.exe set pp”WebsiteName / applicationName“/enabledProtocols:http,net.tcp”

注意:IIS配置是分层的,因此我们应该在尽可能低的级别更改配置,以避免其他应用程序出现不必要的更改/安全问题。

以下链接可能会有所帮助: http : //msdn.microsoft.com/en-us/library/ms788757.aspx http://support.microsoft.com/kb/2803161

希望这有助于艾伯特