不支持协议'net.tcp'

时间:2010-10-26 11:32:04

标签: c# wcf

当我尝试浏览service.svc文件时,我不断收到此错误。

  1. 我在默认情况下启用了tcp IIS中的网站。
  2. 端口号808:*已经存在 在我的IIS绑定
  3. 我已经安装了WAS并支持 非http协议......
  4. TcpChannellistener服务和tcp 端口共享服务正在运行..
  5. 但是,为什么我无法浏览网站?它一直显示“不支持协议'net.tcp'。”

    这是我的代码......

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ServiceModel;
    using System.ServiceModel.Activation;
    using System.ServiceModel.Web;
    using System.Web.Services.Description;
    using System.ServiceModel.Description;
    using System.ServiceModel.Channels;
    using System.IO;
    
    namespace WcfService7
    {
        public class clsMyOwnServiceHost:ServiceHostFactory
        {
    
                   protected override ServiceHost CreateServiceHost( Type t, Uri[] baseAddresses )
                   {
    
                       NetTcpBinding tcpbinding = new NetTcpBinding(SecurityMode.None);
                       BasicHttpBinding basicbinding = new BasicHttpBinding(BasicHttpSecurityMode.None);
                       WSHttpBinding wsbinding = new WSHttpBinding(SecurityMode.None);
    
                       baseAddresses = new Uri[] { new Uri("http://localhost/WcfService7/Service1.svc"),new Uri("net.tcp://localhost/WcfService7/Service1.svc/tcp") };
                       ServiceHost host = new ServiceHost(t, baseAddresses);
                       baseAddresses.ToList().ForEach(uri =>
                        {
    
    
                            //ServiceMetadataBehavior metabehavior = new ServiceMetadataBehavior();
    
                            //metabehavior.HttpGetEnabled = true;
                          //  host.Description.Behaviors.Add(metabehavior);
                            if (uri.AbsoluteUri.Contains("http://")) host.AddServiceEndpoint(typeof(IService1), basicbinding, "basic");
                          if(uri.AbsoluteUri.Contains("net.tcp://"))  host.AddServiceEndpoint(typeof(IService1),tcpbinding,"tcp");
                           if(uri.AbsoluteUri.Contains("http://")) host.AddServiceEndpoint(typeof(IService1), wsbinding, "ws");
                           if (uri.AbsoluteUri.Contains("http://")) host.AddServiceEndpoint(typeof(IService1), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
    
    
    
                        });
    
                       return host;
                   }
    
        }
    }
    

    请帮帮我......

    非常感谢

1 个答案:

答案 0 :(得分:2)

您需要为您的uri添加TCP端口。 HTTP有一个默认端口,但TCP没有。

<强>更新

默认情况下,

net.tcp未安装在IIS上。通过添加/删除功能确保安装它,并检查TCP是否已勾选。

有1001种不同的设置必须正确。您需要有一个运行4.0的应用程序池,因此如果您尚未创建单独的应用程序池,请执行此操作并将其设置为4.0并让应用程序在其中运行。

转到该站点的高级属性,在启用的协议上输入“http,tcp”。