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