我正在构建虚拟WCF REST服务,目的是为了了解它是如何工作的(准备真正的服务构建)。我使用REST服务并使用JSON和POX格式进行响应。但是,我无法使路由解决方案工作,以消除“.svc”文件。我在Win Server 2008 R2上使用VS 2010,WCF 4.0和IIS 7.5。
现在URL的工作原理为:“/ api /rest / atrest.svc / json / myMethod”,但我想要“/ api / rest / json / myMethod”。我在SO和其他地方发现了许多文章声称删除了“.svc”文件。我相信我按照指示进行了设置,但由于Global.asax文件中的错误,项目无法构建。
它说要将以下内容添加到Application_Start函数中:
RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(),
typeof(RestService)));
我还在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>
我还将aspNetCompatibility行添加到web.config和svc.cs文件中的类之上。
问题是我甚至无法建立项目。当我将RouteTable.Routes.Add行添加到global.asax并构建它时,我收到以下错误:
类型 'System.ServiceModel.Activation.ServiceHostFactory' 在一个不是的程序集中定义 引用。您必须添加引用 到装配 “System.ServiceModel.Activation, 版本= 4.0.0.0,文化=中立, 公钥= 31bf3856ad364e35' 。
类型或命名空间名称 无法找到'ServiceRoute'(是 你错过了使用指令或 装配参考?)
为什么会失败的任何想法?
答案 0 :(得分:5)
确保在项目中引用“System.ServiceModel.Activation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”,如果确保将其添加到web.config文件中。 - Joakim Mar 25 at 19:03