WCF删除.svc扩展名

时间:2011-09-08 21:15:48

标签: .net wcf visual-studio-2010

我可以通过以下帖子将ServiceRoute添加到我的WCF .net 4.0服务,扩展名为.svc:

  1. Post 1
  2. Post 2
  3. 然而如何删除“.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扩展程序?

1 个答案:

答案 0 :(得分:6)

Ron Jacobs在这个主题上发表了一篇很棒的文章 - 您需要使用ServiceRoute来实现您的目标:

正如他在后续帖子WCF Data Services and ServiceRoute中所显示的那样,生成的服务文档确实也反映了更改,并显示了没有.svc扩展名的服务网址。

这些东西需要ASP.NET路由支持,它完全存在于.NET 4中(如果需要,可以在.NET 3.5 SP1中使用)