我正在尝试让端点处理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" %>
答案 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)没有此要求。