我可以通过以下帖子将ServiceRoute添加到我的WCF .net 4.0服务,扩展名为.svc:
然而如何删除“.svc”扩展程序?
我的实际服务文件称为 Catalog.svc
在关注这些帖子后,我可以使用 csw.svc
访问相同的服务我的Global.asa.cs:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
private void RegisterRoutes(RouteCollection routes)
{
routes.Add(new ServiceRoute("csw.svc", new WebServiceHostFactory(), typeof(CSW_ebRIM_WebService.Catalog)));
}
我的Web.config:
...
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" >
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="~/csw.svc"
service="CSW_ebRIM_WebService.Catalog"/>
</serviceActivations>
</serviceHostingEnvironment>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
<handlers>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd"/>
</handlers>
</system.webServer>
但是,如果我从全局和.svc
移除web.config
扩展程序,我会收到错误消息:
在部分下注册的relativeAddress'〜/ csw' 'system.serviceModel / serviceHostingEnvironment / serviceActivations'in 配置文件没有扩展名。
如果我在.svc
上放回web.config
扩展名,只将其从全局中删除:
值不能为空。 参数名称:合同
描述:执行当前Web期间发生了未处理的异常 请求。请查看堆栈跟踪以获取有关的更多信息 错误以及它在代码中的起源。
异常详细信息:System.ArgumentNullException:值不能为null。 参数名称:合同
是什么给出的?如何删除.svc
扩展程序?
答案 0 :(得分:6)
Ron Jacobs在这个主题上发表了一篇很棒的文章 - 您需要使用ServiceRoute
来实现您的目标:
正如他在后续帖子WCF Data Services and ServiceRoute中所显示的那样,生成的服务文档确实也反映了更改,并显示了没有.svc
扩展名的服务网址。
这些东西需要ASP.NET路由支持,它完全存在于.NET 4中(如果需要,可以在.NET 3.5 SP1中使用)