Asp.net-Mvc

ASP.NET MVC:CSS 文件存在時返回 302 錯誤

  • February 22, 2012

今天早上,我在 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 動作。

引用自:https://stackoverflow.com/questions/9402592