Asp.net-Mvc
ASP.NET MVC:CSS 文件存在時返回 302 錯誤
今天早上,我在 localhost 的 ASP.NET MVC 2 站點上的單個 CSS 文件上返回 302 錯誤,我不知道會發生什麼變化。
本地主機站點使用 IIS 7.5,儘管我對 IIS 的經驗有限,所以我沒有過多關注那裡可能發生的事情。
CSS 文件的 URL 是:
http://localhost/MySite/Content/Site.css?v=16響應中的位置標頭如下所示:
/MySite/Account/Login?ReturnUrl=%MySite%2fContent%2fSite.css%3fv%3d16&v=16這讓我認為 MVC 正在重定向靜態文件或類似的東西,但是如果是這樣的話,那麼我希望我所有的圖像、CSS 和 JavaScript 文件都在做同樣的事情,而他們不是。以防萬一,這裡是
RegisterRoutes()Global.ascx 的簡化版本:public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("", "Account/{action}/", new { controller = "Account" }); routes.MapRoute("", "{action}", new { controller = "Home", action = "Index" }); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); routes.MapRoute( "Error", "{*url}", new { controller = "Home", action = "ResourceNotFound" } ); }此外,如果我將 CSS 文件的名稱更改為 Site2.css 並引用它,同樣的事情也會發生。
這是怎麼回事?
重定向到登錄方法使它看起來是因為對目錄或文件的權限,而不是 MVC 路由擷取它。(如果它被 MVC 路由擷取,它可能會導致錯誤決定使用哪個控制器和/或操作。)
ASP.NET MVC 本身只保留靜態文件,但如果 ASP.NET 通常認為匿名使用者無權訪問 CSS 文件或其目錄,則 ASP.NET 將重定向到登錄 URL,這將是一個 ASP.NET MVC 動作。