1

問題に直面しています: ASP.Net で URL 書き換えを行いたい

ローカル設定を使用すると完全に機能しますが、サーバー上では期待どおりに機能しません。

ローカル

/unavailable-file.aspx への要求は Application_Error (Global.asax.cs) で適切に取得され、その後 /404.aspx にリダイレクトされます /unavailable-random-folder またはその他のファイルへの要求は Application_Error (Global. asax.cs) にリダイレクトされ、/404.aspx にリダイレクトされます。

リモート .aspx ファイルへのすべての要求は Application_Error でキャッチされます 他のすべての要求 (.jpg、フォルダーなど) はまったくキャッチされず、デフォルトの 404 ページ エラーにスローされます

私の問題:

昨日、新しい Web サイトをサーバーにインストールしていましたが、ローカル コンピューター (Visual Studio を使用) で毎回 (要求されたすべてのファイルまたはフォルダーに対して) Application_BeginRequest がサーバー上でまったく発生していないことがわかりました。HttpModule を作成する必要がありましたが、イベントが正常に発生するようになりました...ただし、.aspx 以外のリクエストでは発生しません。

すべてが URL にバインドされているようです。.aspx で終わる場合は正しく管理されており、そうでない場合はまったく管理されていません。

非aspxページでもすべてのApplication_BeginRequestをキャッチするにはどうすればよいですか?

私の web.config には、404 エラーを私のページに強制しようとするものがあります。

<customErrors mode="On"
  defaultRedirect="404.aspx">
  <error statusCode="404" redirect="404.aspx"/>
</customErrors>

しかし、私が言ったように、.aspx で終わる要求でない限り、リダイレクトされず、デフォルトの ASP.Net 404 エラーが発生します。

(私のホストは「信頼できるサイト」であり、マネージャー(共有ホスティング)内の404.aspxページを指す404エラーの設定がありますが、何も変更されません)

すべてがローカルモードのように機能することを願っています。

その問題を解決するためのヒントがあれば教えてください。

4

2 に答える 2

1

開発用 Web サーバーでは、すべての要求が aspx エンジンによって処理されます。ライブ サーバーでは、さまざまなファイル タイプがさまざまなエンジンによって処理されます。

ライブ サーバーが要求ごとに aspx エンジンを使用するようにするには、IIS で Web サイトの構成を変更する必要があります。

関連: ASP.net の web.config がすべての 404 をキャッチしない

于 2012-06-07T23:06:19.240 に答える
0

共有環境がある場合、この問題の解決策は次のとおりです。

  1. 共有環境設定で ASP.Net 統合パイプラインを有効にします (これは IIS 7 以降で利用可能です)
  2. これを web.config に追加します。

    <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="RedirectHttpModule" type="RedirectHttpModule" />
    </modules>
    </system.webServer>
    

RedirectHttpModule は、たとえば Application_BeginRequest を処理するカスタム モジュールです。

「runAllManagedModulesForAllRequests」は、Web アプリケーションへのすべての要求に対してすべてのマネージド モジュールが呼び出されることを意味します。

于 2012-06-08T00:35:51.410 に答える