1

アップデート! だから私はこれを解決したと思った-そしてそれは戻ってきた。私の無視ルートは無視されているようです。すべてのリクエストがリダイレクトされています:(

作業中のMVCサイトがあり、その大部分はEXTJSにあるため、単一のコントローラー、ホームビュー、およびログインビューのみを使用しています。かなり標準的な設定です。これは先週機能していました。ホームコントローラーでインデックスアクションが呼び出され、すぐにログインアクションにリダイレクトされます。わかりました-すばらしい、それは予想される動作です。

今だけ、リンクされたすべてのファイル、cssまたはjavascriptが同じログインページにリダイレクトされます。これの例外は、残りのURIを介してフェッチされたいくつかのスクリプトファイルです。そこで、ここで渡されるルートデバッガーをダウンロードし、スクリプトファイルの1つにURLを渡しました。それは即座に再フォーマットされ、私が探していたファイルにreturnurlパラメータが設定されたログインページにリダイレクトされました。これにより、MVCのルートに到達する前にリクエストがリダイレクトされていると思います。これは可能ですか?この問題をデバッグするために実行できるその他の手順は何ですか?

これが私のglobal.asaxファイルのルーティング内容です。

/// <summary>
  /// Registers the routes.
  /// </summary>
  /// <param name="routes">The routes.</param>
  public static void RegisterRoutes(RouteCollection routes)
  {
     routes.IgnoreRoute(@"{resource}.axd/{*pathInfo}");
     routes.IgnoreRoute(@"resources/*"); //Redirecting!! Css and image files
     routes.IgnoreRoute(@"wcfrestbusinesslogic/*"); //This one works fine
     routes.IgnoreRoute(@"ext/*"); //These are also redirecting

     routes.IgnoreRoute(@"{*favicon}",
                        new
                        {
                           favicon = @"(.*/)?favicon.ico(/.*)?"
                        });

     routes.MapRouteLowercase(@"PasswordReset",
                              @"{action}/{guid}",
                              new
                              {
                                 controller = @"home",
                                 action = @"index"
                              },
                              new
                              {
                                 IsHome = new IsHomeActionConstraint(),
                                 guid = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$"
                              });

     routes.MapRouteLowercase(@"Home",
                              @"{action}/{output}",
                              new
                              {
                                 controller = @"home",
                                 action = @"index",
                                 output = UrlParameter.Optional
                              },
                              new
                              {
                                 IsHome = new IsHomeActionConstraint(),
                                 output = @"(json|xml|pdf|jpg|jpeg|tiff|png|csv)?"
                              });

     routes.MapRouteLowercase(@"Home2",
                              @"{action}/{id}/{output}",
                              new
                              {
                                 controller = @"home",
                                 action = @"index",
                                 id = UrlParameter.Optional,
                                 output = UrlParameter.Optional
                              },
                              new
                              {
                                 IsHome = new IsHomeActionConstraint(),
                                 id = @"[0-9]{1,}",
                                 output = @"(json|xml|pdf)?"
                              });

     routes.MapRouteLowercase(@"Home3",
                              @"{action}",
                              new
                              {
                                 controller = @"home",
                                 action = @"index"
                              },
                              new
                              {
                                 IsHome = new IsHomeActionConstraint()
                              });

     routes.MapRoute(@"Action",
                     @"{controller}/{action}/{output}",
                     new
                     {
                        controller = @"Home",
                        action = @"Index",
                        output = UrlParameter.Optional
                     },
                     new
                     {
                        output = @"(json|xml|pdf|png|csv)?"
                     });

     routes.MapRoute(@"Default",
                     @"{controller}/{action}/{id}/{output}",
                     new
                     {
                        controller = @"Home",
                        action = @"Index",
                        id = UrlParameter.Optional,
                        output = UrlParameter.Optional
                     },
                     new
                     {
                        id = @"[0-9]{1,}",
                        output = @"(json|xml|pdf)?"
                     });


  }
4

2 に答える 2

3

フォーム認証がファイルを保護しているようです。

Web.Configにこのようなものはありますか?

<location path="resources">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
<location path="ext">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
于 2012-09-24T15:14:30.400 に答える
2

さて、ソリューションはSVNに関連していることが判明しました。サイトが機能していた時間に戻して、その時点から最新のアップデートで上書きする必要がありました。何かがどこかにキャッシュされていて、何がそれを修正したのかわかりませんが、この問題が発生し、解決策が投稿されていない場合は、ソース管理を調べてください。

皆様のご協力に感謝いたします。

更新 svnは問題の一部にすぎず、svn自体ではありませんでしたが、プロジェクト内の特定のファイルで各開発者から変更されていたアクセス許可です。

週末にコンピュータ名が変更されたときに問題が再発しました。

問題の本当の原因は、IISの匿名認証がIUSRを使用するように設定されていたことでしたが、ApplicationPoolIdentityを使用するように設定されている必要があります。

IUSRはコンピューター名を追加することで機能するため、SVNからのファイルのアクセス許可はすべて古い名前に設定されていたため、IISがそれらのアクセス許可を持つものをフェッチしようとすると、失敗してログインページにリダイレクトされていました。 MVCのルートマネージャーにさえ当たっています。

UPDATE 2 この問題が再び発生しました。今回は、いくつかのweb.configファイルが共有を介して私のマシンでアクセスされ、この302の問題が発生し始めました。上記の設定がiisで正しく設定されていないことがわかりました。

于 2012-09-24T16:47:54.177 に答える