1

我正在尝试让一个端点在 IIS (Express) 上工作。在 VS 中使用 IIS Express 调试项目并在浏览器中打开端点地址时,我只收到一个正常的 404 错误。

我的 web.config:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior>
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug httpHelpPageEnabled="false" includeExceptionDetailInFaults="true"/>
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <services>
        <service name="A.B.C">
          <host>
            <baseAddresses>
              <add baseAddress="http://localhost:15000"/>
            </baseAddresses>
          </host>
          <endpoint address="Test" binding="basicHttpBinding" contract="A.B.IC" bindingConfiguration="A.B.C">

          </endpoint>
        </service>
      </services>
      <bindings>
        <basicHttpBinding>
          <binding name="A.B.C"
                   maxBufferPoolSize="20971520"
                   maxBufferSize="2097152"
                   maxReceivedMessageSize="2097152">
          </binding>
        </basicHttpBinding>
      </bindings>
    </system.serviceModel>
</configuration>

当我将具有以下内容的 .svc-Datei 放入网站根目录时,它工作正常:

<%@ ServiceHost Service="A.B.C" CodeBehind="Services/C.svc.cs" %>
4

2 回答 2

1

使用 IIS 托管时,您不应提供自己的基地址。服务的基地址由 .svc 文件的位置给出。然后端点地址相对于 .svc 文件

IIS 使用 .svc 文件将请求映射到 WCF(而不是 ASP.NET)。

现在,您可以使用serviceActivations拥有一个虚拟 .svc 文件而不是物理文件,或者如果您使用 ASpNetCompaibility 可以使用 ServiceRoute 完全删除 .svc 部分,如本文所示

于 2011-07-19T09:35:29.750 回答
0

我想你已经回答了你自己的问题。通过 HTTP 托管时,您需要一个 .svc 文件,以便 Web 服务器可以实例化该服务。其他绑定(例如 net.tcp 或 net.msmq)没有此要求。

于 2011-07-19T09:15:21.130 回答