2012-02-22 38 views
7

今天早上,我在本地主機上的ASP.NET MVC 2網站上的單個CSS文件上返回302錯誤,我不知道會發生什麼已經改變,導致這一點。ASP.NET MVC:CSS文件存在時返回302錯誤

本地主機站點使用IIS 7.5,但我對IIS的使用經驗有限,所以我沒有仔細考慮過會發生什麼。

的URL CSS文件是:

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而取而代之的是,同樣的事情發生引用的名稱。

發生了什麼事?

回答

8

重定向到登錄方法使其看起來像這是因爲目錄或文件的權限,而不是MVC路由捕捉它。 (如果它被MVC路由所捕獲,它可能會導致錯誤,從而確定使用哪個控制器和/或動作。)

ASP.NET MVC本身只保留靜態文件,但如果ASP.NET一般決定匿名用戶無權訪問CSS文件或其目錄,則ASP.NET將重定向到登錄URL,該URL將是ASP.NET MVC操作。

+1

唉就是這樣。這是對特定CSS文件的權限問題,而不是整個內容目錄(這會使所有靜態內容都發生同樣的情況)。仍然不確定這些權限是如何改變的。授予AppPool用於授權的帳戶的權利解決了該問題。 – ajbeaven 2012-02-22 23:37:59

+0

我有同樣的問題,它是文件本身的權限,而不僅僅是目錄。 – EtienneT 2014-01-06 18:31:10

+1

我已經檢查過,這個答案讓我再次檢查..我的不只是在文件上,但它讓我審查第5次的權限,因爲它證實了我的想法..在我的情況下,我比較的環境打了「用戶「網站文件夾中的組。不會說這是一個最好的實踐,它恰好是環境缺失的團體。當然,使用IUSR直接工作,但我保持匹配,以防止混淆。 – Tony 2016-12-30 18:56:57

8

看起來web.config中的授權規則是說你必須通過認證才能看到css頁面。你應該能夠證明,通過登錄,看看你是否可以得到正確的服務的CSS文件。

我想向web.config添加一個位置部分,以刪除內容目錄上的授權要求。取自http://support.microsoft.com/kb/316871

<!-- This section gives the unauthenticated user access to all of the files that are stored in the Content folder. --> 
<location path="content"> 
<system.web> 
    <authorization> 
     <allow users ="*" /> 
    </authorization> 
</system.web> 
</location> 
+0

+1好主意。我也會實施這個。 – ajbeaven 2012-02-22 23:38:36