添加路由以消除REST服务中的.SVC不起作用

Bry*_*wis 2 .net c# rest wcf

我正在构建一个虚拟WCF REST服务,目的是为了了解它是如何工作的(准备真正的服务构建).我使用REST服务并使用JSON和POX格式进行响应.但是,我无法使路由解决方案工作,以消除".svc"文件.我在Win Server 2008 R2上使用VS 2010,WCF 4.0和IIS 7.5.

现在URL的工作原理为:"/ api /rest/atrest.vc/json/myMethod",但我想要"/ api/rest/json/myMethod".我在SO和其他地方发现了许多文章声称删除了".svc"文件.我相信我按照指示进行了设置,但由于Global.asax文件中的错误,项目无法构建.

它说要将以下内容添加到Application_Start函数中:

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), 
    typeof(RestService)));
Run Code Online (Sandbox Code Playgroud)

我还在web.config中添加了以下内容:

 <modules runAllManagedModulesForAllRequests="true">
     <add name="UrlRoutingModule"
          type="System.Web.Routing.UrlRoutingModule, 
      System.Web.Routing, Version=4.0.0.0, 
      Culture=neutral, 
      PublicKeyToken=31BF3856AD364E35" />

 </modules>
 <handlers>
     <add name="UrlRoutingHandler"
        preCondition="integratedMode"
        verb="*" path="UrlRouting.axd"
        type="System.Web.HttpForbiddenHandler, 
     System.Web, Version=4.0.0.0, Culture=neutral, 
     PublicKeyToken=b03f5f7f11d50a3a" />
 </handlers>
Run Code Online (Sandbox Code Playgroud)

我还将aspNetCompatibility行添加到web.config和svc.cs文件中的类之上.

问题是我甚至无法建立项目.当我将RouteTable.Routes.Add行添加到global.asax并构建它时,我收到以下错误:

"System.ServiceModel.Activation.ServiceHostFactory"类型在未引用的程序集中定义.您必须添加对程序集'System.ServiceModel.Activation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用.

找不到类型或命名空间名称'ServiceRoute'(您是否缺少using指令或程序集引用?)

任何想法为什么失败?

lar*_*rsw 5

确保在项目中引用"System.ServiceModel.Activation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35",如果确保将其添加到web.config文件中. - Joakim 3月25日19:03