2011-02-18 59 views
2

我有一個ASP.Net MVC 2個網站使用與以下航線的綜合管線IIS7下設:ASP.Net MVC 404錯誤,當路由包含一個.svc擴展

routes.MapRoute(
    "MyRoute", 
    "mycontroller/{name}/{*path}", 
    new { controller = "MyController", action = "Index", path = UrlParameter.Optional } 
); 

有沒有其他途徑這條線路以上,但每當我試着訪問上面的路線與具有.svc擴展的路徑值,例如:

http://localhost/MyVirtualDirectory/mycontroller/test/somepath.svc

ASP.Net在不執行我的控制器的情況下返回404錯誤(我在操作方法的開始處有一條日誌消息調用)。如果我將擴展名更改爲良性(如.txt),它可以很好地工作,所以似乎沿線ASP.Net正在將請求解釋爲標準的ASP.Net對不存在的Web服務的調用 - 這絕對是一個ASP.Net 404響應(不是IIS響應)。

有什麼可能導致這種情況,我該如何阻止它發生?

+0

的可能重複[我怎樣才能覆蓋我的路由表中的.svc文件?](http://stackoverflow.com/questions/3662555/how-can-i-override-a-svc-file-in-my-routing-table) – Justin 2011-02-18 08:48:09

回答

5

是否將IIS配置爲服務器.svc文件?您可能需要add the .svc MIME type到IIS

在IIS

  1. 選擇您的網站
  2. 點擊MIME類型
  3. 點擊 '添加' 來添加.SVC MIME類型

更新

嘗試this answer

您遇到的問題是由於爲.svc文件註冊的構建提供程序。此構建提供程序由默認的機器級別web.config文件註冊。

更新你的web.config

<system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    <buildProviders> 
     <remove extension=".svc"/>    
    </buildProviders> 

Phil Haack's full post on the issue

+0

試過 - 它沒有任何效果 - 另外如果我使用未知的擴展名(如.bob),它工作正常。 – Justin 2011-02-18 07:04:35