2010-10-26 379 views
3

当我尝试浏览我的service.svc文件时,我不断收到此错误。协议'net.tcp'不支持

  1. 我已经在IIS的默认 网站中启用了tcp。
  2. 端口号808:*为已经 有我的IIS绑定
  3. 伊夫安装WAS和 非HTTP协议的支持...
  4. TcpChannellistener服务和TCP端口 共享服务正在运行...

但是,现在为什么我无法浏览网站?它一直显示“The protocol'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; 
       } 

    } 
} 

请帮我...

非常感谢

+0

什么版本的IIS你? IIS6不以任何方式支持net.tcp,形状或形式 - 您必须自行托管。 IIS7/7.5支持net.tcp,但它需要手动激活 – 2010-10-26 11:51:42

+0

我使用IIS7和TCP被激活 – dotnetgeek 2010-10-29 05:11:20

回答

2

您需要添加端口TCP您的URI。 HTTP有一个默认端口,但TCP不。

UPDATE

的net.tcp默认是不安装IIS上。确保通过添加/删除功能来安装它,并检查TCP是否打勾。

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

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

+0

我试图加入808太....仍然没有工作:(...任何其他的东西,我可以尝试? – dotnetgeek 2010-10-26 11:46:08

+0

检查我的更新 – Aliostad 2010-10-26 11:51:29

+0

net.tcp安装... ive安装它... – dotnetgeek 2010-10-26 12:10:59