2011-03-25 30 views
2

我正在構建一個虛擬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指令或 集引用?)

任何想法,這是爲什麼失敗?

+3

請確保在項目中引用了「System.ServiceModel.Activation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35」,如果它確保將其添加到web.config文件也是如此。 – Joakim 2011-03-25 19:03:58

+0

謝謝。這是一個杜。 – 2011-03-25 20:43:48

+0

嘿,如果這第一條評論是真正的答案,你可以發佈它,然後接受它作爲答案?在查看標記爲「WCF」的問題列表時,此問題看起來仍然沒有答案。 – a7drew 2011-04-22 20:30:35

回答

5

請確保在項目中引用了「System.ServiceModel.Activation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35」,如果確實要將其添加到web.config文件中。 - Joakim 3月25日在19:03

+0

可以使用3.5框架來完成嗎? – montelof 2013-06-28 16:16:00