尝试通过 HTTP 访问服务时出现 TCP 错误

Having TCP error when trying to access a service via HTTP

我有一个名为 "HelloWorldService" 的 Class 库类型项目,它具有以下接口:

namespace HelloWorldService
{
    [ServiceContract]
    public interface IHelloWorldService
    {
        [OperationContract]
        string GetMessage(string message);
    }
}

还有这个class:

namespace HelloWorldService
{
    public class HelloWorldService : IHelloWorldService 
    {
        public string GetMessage(string message)
        {
            return message;
        }
    }
}

我在我的解决方案中创建了一个网站,并在其中导入了 "HelloWorldService" 的引用。 所以,这个网站(称为 HelloWorldLocal)只有一个包含 "HelloWorldService.dll"、"HelloWorldService.pdb" 的 bin 文件夹,在 bin 文件夹外有这个 web.config 文件:

<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.5.2" />
      <httpRuntime targetFramework="4.5.2" />
    </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment>
      <serviceActivations>
        <add factory="System.ServiceModel.Activation.ServiceHostFactory"
             relativeAddress="./HelloWorldLocal/HelloWorldLocal.svc" service="HelloWorldService.HelloWorldService"/>
      </serviceActivations>
    </serviceHostingEnvironment>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

现在,我在 "Default Web Site/HelloWorldLocal" 下通过 Visual Studio 在 IIS 上发布此网站,当我尝试访问 http://localhost/HelloWorldLocal/HelloWorldService.svc 时,我收到此 TCP 错误:

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

想法?

谢谢。

尝试更改以下行

<add factory="System.ServiceModel.Activation.ServiceHostFactory"
         relativeAddress="./HelloWorldLocal/HelloWorldLocal.svc" service="HelloWorldService.HelloWorldService"/>

<add factory="System.ServiceModel.Activation.ServiceHostFactory"
         relativeAddress="HelloWorldLocal.svc" service="HelloWorldService.HelloWorldService"/>

我已经解决了我的问题,方法是打开 IIS 管理器,在网站上单击右键,然后选择“管理应用程序”>“高级设置”。

然后在打开的 window 上,有一个 "Enabled Protocols" 属性 只有 http。我添加了 "net.tcp" 并且有效。

不知道为什么,但确实如此。