2010-01-21 61 views
1

我定義中的Application_Start路線,因爲這麼多的教程已經指示ASP.net路由結果404

RouteTable.Routes.Add(
      "Files", 
      new Route("Files/Art", 
       new FileRouteHandler())); 

而且創建了自己的RouteHandler。但是,這似乎並沒有工作。

當我調試應用程序時,我可以看到(通過斷點)路由被添加,但是當我瀏覽到「http://localhost/MyApplication/Files/Art」時,我得到瀏覽器404(不是ASP.net 404)。

當我在路由處理程序中放置一個斷點時,它在訪問URL時不會中斷。訪問URL時,Application_BeginRequest中的一個斷點不會中斷。

這是一個問題,但我完全理解爲什麼我會得到一個通用的404。IIS如何知道用asp.net處理這個URL,畢竟它並不存在?

我在這裏錯過了什麼?

回答

1

確保您已安裝並配置UrlRoutingModuleweb.config。類似的事情發生了什麼如下圖所示:

<system.web> 
     ... 
     <httpModules> 
     ... 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </httpModules> 
    </system.web> 
+0

是的,我在那裏。同樣的問題。 – 2010-01-21 20:12:13

1

我知道這是一個網絡服務器的問題...

http://www.asp.net/%28S%28pdfrohu0ajmwt445fanvj2r3%29%29/learn/mvc/tutorial-08-vb.aspx

簡短的回答:在IIS 6(在我的案件5.1)以下的路徑如「文件/藝術」不起作用。它不會傳遞給ASP.net。但是,諸如「Files.svc/Art」之類的路徑將起作用。

問題是,IIS 6及以下版本需要一個文件擴展名來知道ISAPI插件的使用。在我的情況下,「.svc」被配置爲使用ASP.net。是的,我在那裏有。

希望是有道理的...