我正在构建一个虚拟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指令或程序集引用?)
任何想法为什么失败?
确保在项目中引用"System.ServiceModel.Activation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35",如果确保将其添加到web.config文件中. - Joakim 3月25日19:03
归档时间: |
|
查看次数: |
8004 次 |
最近记录: |