2012-02-22 24 views
7

今朝localhostのASP.NET MVC 2サイトで1つのCSSファイルに302エラーが返されています。これを引き起こすように変更されました。ASP.NET MVC:存在する場合に302エラーを返すCSSファイル

localhostサイトはIIS 7.5を使用していますが、私はIISでの経験が限られているため、そこで何が起こっているのかについてはあまり気にしていません。

http://localhost/MySite/Content/Site.css?v=16 

と応答のロケーションヘッダは、次のようになります:

CSSファイルへのURLです。これは、私はMVCは、静的ファイルか何かをリダイレクトしていると思います

/MySite/Account/Login?ReturnUrl=%MySite%2fContent%2fSite.css%3fv%3d16&v=16 

そのような場合は、すべての画像、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" } 
    ); 
} 

また、私が代わりに、同じことが起こることをSite2.cssに私のCSSファイルの名前と参照を変更した場合。

何が起こっているのですか?

答えて

8

ログオンメソッドにリダイレクトすると、これをキャッチするMVCルートではなく、ディレクトリまたはファイルのアクセス許可が原因です。 (MVCルートでキャッチされた場合は、使用するコントローラやアクションを判断する際にエラーが発生する可能性があります)。

ASP.NET MVC自体はスタティックファイルを残しますが、一般的にASP.NET匿名ユーザーがCSSファイルまたはそのディレクトリにアクセスできないと判断すると、ASP.NETはログオンURLにリダイレクトされます。これはASP.NET MVCアクションになります。

+1

ああそうです。これはコンテンツディレクトリ全体ではなく、その特定のCSSファイルに対するアクセス許可の問題でした(これは、すべての静的コンテンツに対して同じことが起こりました)。しかし、これらのアクセス許可がどのように変更されたかまだ分かりません。 AppPoolが承認のために使用していたアカウントに権限を与えることで、問題が解決されました。 – ajbeaven

+0

私は同じ問題を抱えていました。ディレクトリだけでなく、ファイル自体に対するアクセス権もありました。 – EtienneT

+1

私はすでにチェックしましたが、この回答は私に再びチェックされました。私のファイルは単なるものではありませんでしたが、私が思ったことを確認して5回目のアクセス許可を見直しました。 "サイトフォルダのグループ。それはちょうど起こったベストプラクティスであるとは言わないでしょう、環境が欠けていたグループ。もちろんIUSRを使用することはもちろんですが、私は混乱を避けるためにそれらを一致させておきました。 – Tony

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

関連する問題