我正在構建一個虛擬WCF REST服務,僅用於學習它如何工作(準備真正的服務構建)。我有REST服務工作並響應JSON和POX格式。但是,我無法使路由解決方案工作以消除「.svc」文件。我在Win Server 2008 R2上使用VS 2010,WCF 4.0和IIS 7.5。添加路由以消除REST服務中的.SVC不起作用
現在URL的作用如下:「/api/rest/rest.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線到網上。 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 2011-03-25 19:03:58
謝謝。這是一個杜。 – 2011-03-25 20:43:48
嘿,如果這第一條評論是真正的答案,你可以發佈它,然後接受它作爲答案?在查看標記爲「WCF」的問題列表時,此問題看起來仍然沒有答案。 – a7drew 2011-04-22 20:30:35