2

web.configファイルにHTTPハンドラーを設定しました。

        <add verb="*" path="*_*.aspx" type="SeoHandler"/>

そして、App_Codeフォルダー内のSeoHandler.ashx.csを指すファイルSeoHandler.ashxを私のWebサイトのルートに持っています(WebサイトはWebアプリケーションプロジェクトではありません)。

サイトをローカルで実行し、「dork_test.aspx」のようなURLを入力すると、リクエストはハンドラーにリダイレクトされ、そこでビジネスが処理されます。

しかし、コンパイルされたサイトが私のドメインで実行されている場合、「dork_test.aspx」は次のようになります。

'/'アプリケーションのサーバーエラー。

リソースが見つかりません。

説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。

要求されたURL:/dork_test.aspx

SeoHandlerが「dork_test.aspx」リクエストをローカルでキャッチするのにサーバーではキャッチしないのはなぜですか?

これが重要かどうかはわかりませんが、ドメインでURL SeoHandler.ashxにアクセスすると、ハンドラーは想定どおりに機能します。

Webホストに私のエントリを無視するIIS設定がある可能性はあります<httpHandlers>か?

4

3 に答える 3

8

サーバー上の IIS で .NET ハンドラーが設定されていないことを確認して、要求されたパスが物理的に存在することを確認します。

  • Web サイトまたは仮想ディレクトリのプロパティに移動します。
  • ホームディレクトリタブ
  • 下のセクションの「構成」をクリックします
  • .ASPX の拡張子を見つけて編集をクリックすると、「ファイルが存在することを確認する」というチェックボックスがあります。

このチェックボックスがオンになっている場合、.NET は、同じ場所にある物理ファイルにマップされていない要求を処理しません。

于 2009-02-14T02:52:46.987 に答える
1

IIS 7 で動作させることができました。URLScan のようなものがインストールされている共有ホスティング プロバイダーを使用していますか? サーバー レベルで既定以外の設定があるかどうかを確認できますか?

于 2009-02-14T02:46:12.323 に答える
1

Rex M は正しい答えを得ましたが、ハンドル .jpg に似たものを試してみましたが、失敗しました。

「ファイルが存在することを確認する」というチェックボックスは非常に重要ですが、それでもそのフォルダーの認証に問題があります。

次に、そのフォルダーに追加して追加した新しい web.config を変更しようとしました

    <authorization>
                       <allow users="*" />
    </authorization>

そしてそれはうまくいきました。そのため、.jpg 要求を処理できない認証プロセスが進行中です。はい、私はそのアプリで認証されていますが、.jpg を要求しようとすると失敗します。

これが解決して、ハンドラーが正常に機能することを証明できることを願っていますが、そのためには重大なセキュリティ上の問題が必要です...

于 2010-02-09T11:16:53.890 に答える