2

我已经启动并运行了 WCF 服务,但今天我想如果我从真实地址中删除 .svc 扩展名并以这种方式访问​​我的服务会怎样?net.tcp://serveraddress/services/service 我但是一旦我更改了配置文件程序就没有启动。此程序和服务是使用 .NET 4.0 开发的,WCF 4 广告服务本身托管在 IIS 7.5 中

是否可以在将服务托管在 IIS 中时以这种方式访问​​服务?

4

2 回答 2

1

这可能是 IIS 中的处理程序的问题。我还使用无扩展的 WCF 服务,并修改了我的 web.config 文件以使其工作。将此添加到您的 web.config 以查看它是否有帮助:

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
  <remove name="UrlRoutingModule" />
  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>

<handlers> 
<remove name="svc-Integrated-4.0" />
<add name="svc-Integrated-4.0" path="*" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
      <add 
        name="UrlRoutingHandler" 
        preCondition="integratedMode" 
        verb="*" path="UrlRouting.axd" 
        type="System.Web.HttpForbiddenHandler, System.Web,  
          Version=2.0.0.0, Culture=neutral,  
          PublicKeyToken=b03f5f7f11d50a3a"/> 
    </handlers> 
</system.webServer>
于 2012-10-04T19:12:38.697 回答
1

我已经托管了没有 svc 文件的 WCF 服务。我在 Global.asax 文件的 Application_Start 方法中将 ServiceRoute 添加到 RouteTable。

protected void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.Add(new ServiceRoute("AdminDataService", new WebServiceHostFactory(), typeof(AdminService)));
    RouteTable.Routes.Add(new ServiceRoute("AuthenticationService", new WebServiceHostFactory(), typeof(AuthenticationService)));
}
于 2014-09-01T10:21:43.743 回答