WCF端点无法在IIS(Express)上工作

时间:2011-07-19 09:12:52

标签: wcf iis http-status-code-404 iis-express endpoint

我正在尝试让端点处理IIS(Express)。 使用IIS Express在VS中调试项目并在浏览器中打开端点地址时,我只得到正常的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" %>

2 个答案:

答案 0 :(得分:1)

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

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

现在您可以使用serviceActivations创建虚拟.svc文件而不是物理文件,或者使用ASpNetCompaibility可以使用ServiceRoute完全删除.svc部分this文章显示

答案 1 :(得分:0)

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