2013-12-18 95 views
1

我正在嘗試使相同的項目與WCF和MVC一起工作。在ASP.NET MVC中支持WCF

我的問題是:

MVC工作完美,比我包括接口和我在WCF服務的.svc。

當我嘗試這樣的事:

http://localhost:2986/PAGENAME.svc 

我得到以下錯誤:

的資源不能被發現。

注意:PAGENAME.svc位於根目錄(以及接口)。

期待這個問題,我列入的RegisterRoutes忽略方法:

routes.IgnoreRoute("{resource}.svc/{*pathInfo}"); 
routes.IgnoreRoute("{resource}.svc"); 

但沒有工作,要麼=/

有誰知道如何解決這一問題?

謝謝!

回答

2

你需要確保你擁有所有必需的文件,這些文件從服務主機(.svc文件)中引用,即:

<@% ServiceHost Service="..."/> 

如果服務指定服務實現。 服務契約(服務實現實現的接口)通常在web.config中配置。

如果服務主機文件位於解決方案的根目錄下,則不需要忽略路由。

您需要引用System.ServiceModel。

如果你想通過打開Visual Studio的命令提示符下運行wcftestclient,文件來測試你的服務,你可以 - >添加服務,並添加網址爲您服務,如:

http://locahost:12423/MyService.svc 
+0

我有「System.ServiceModel」參考=),我有服務實現過(該服務使用一個MVC使用的庫)接口也在那裏=/ – Crasher

+0

確保正在調用正確的http處理程序。它應該是處理.svc文件擴展名的那個。這基本上與說你應該確保你的忽略路線正常工作一樣。如果有任何幫助,可以檢查在IIS中調用哪個處理程序:http://serverfault.com/questions/350318/iis-7-5-how-to-find-which-handlers-are-being-called- for-a-request – Rui

+1

也許更安全的IgnoreRoute是:{* url} .svc。 *表示忽略「/」。請參閱http://stackoverflow.com/questions/3156204/can-someone-explain-asp-net-routing-syntax-to-me。此外,路線順序很重要,所以請確保你先放置一個 – Rui

1

它已經因爲同時我玩過這個遊戲,但是我認爲在使用MVC時你需要註冊一個service route ......但是我不記得是否這就是我要做的事情,或者我只是想爲那些乾淨的路線做這些事情。

要使用服務路徑添加一個服務,你會做類似下面

routes.Add("MyService", new ServiceRoute(
    "some/path", 
    new ServiceHostFactory(), 
    typeof(MyService) 
)); 
+1

這將消除需要.svc文件 – Rui

+0

啊這聽起來是正確的,它已經有一段時間,因爲我玩過WCF –

+0

是的..我不想消除.svc文件=/...其實我想兩種可能性..使用SOAP和HTTP =) – Crasher