2011-02-01 143 views
0

我想在單個網站中部署一個asp.net MVC和WCF服務。根網站是MVC應用程序,我將運行WCF作爲網站的虛擬目錄。但是,由於MVC的路由不會將請求轉發給服務,因此服務不能被訪問。它會說「頁面未找到」。如何在asp.net MVC應用程序的虛擬目錄中訪問WCF服務?

http://PC:9000 < - MVC應用程序的根目錄

我有一個名爲「WCF」的WCF的虛擬目錄,

http://pc:9000/wcf/service.svc < - 應該訪問的服務,但MVC的路線進行干預,將顯示頁面未找到。

任何想法如何使這項工作?如果電話是用於服務,我將如何忽略路由?

回答

0

這裏是我做的:

因爲根應用程序是MVC,當用戶試圖訪問WCF的虛擬目錄,並嘗試導航時,MVC將檢測到用戶尚未在WCF應用程序中進行身份驗證。 MVC會做的是按照web配置的指示將它重新路由到認證表單頁面。

要解決這個問題,只需將以下代碼添加到MVC的Web配置文件中即可。

<location path="WCF"> 
    <system.web> 
     <authentication mode="None"> 
     </authentication> 
    </system.web> 
</location> 

這是什麼意思是禁用WCF路徑的身份驗證。因此,當用戶訪問WCF服務時,它不會通知MVC WCF尚未通過身份驗證,因此不會發生重新路由。

這解決了我的問題。

0

嘗試添加忽略路線:

routes.IgnoreRoute("{resource}.svc"); 
+0

是這麼簡單嗎? – 2011-02-01 08:20:30

+0

對不起,但這不適合我。它的頁面未找到,URL將嘗試重定向到登錄頁面。 – 2011-02-01 10:48:51

相關問題