1

IHttpModuleを実装するクラスがあります。これは、アプリケーションがDDOS攻撃から防御するのに役立つサポートクラスです。メソッドを実装した後BeginRequest、コードをデバッグしようとしましたが、何らかの理由で、クラスをデバッグするたびに、VisualStudioに複数のスレッドがあります。ローカルマシンでこのアプリケーションを実行しているときに、突然、いくつかのスレッドが発生し、このクラスでのみ発生する理由がわかりません。

4

1 に答える 1

2

HttpModuleは、ファイル(js、css、画像など)を含む、アプリケーションへのすべてのリクエストをインターセプトする可能性があります。

各リクエストのRequestオブジェクトを確認し、Urlプロパティを確認して何が起こっているかを確認します。

編集: HttpModuleはリクエストフローの非常に早い段階でアクティブになり、サーバーに対するほとんどのリクエストにヒットすることが多いため、HttpModuleのコードを最小限に抑えます。例:ファイルに権限を設定している場合は、リクエストが実際にファイルにヒットしていることを確認してください(つまり、リクエストされたURLは/ files /で始まります)。可能な限り、HttpModuleで使用するためにデータをキャッシュし、HttpModule内のすべてのリクエストのデータベースにアクセスしないでください。

実際のアプリケーションでヒットが少なくなる理由は、画像、jsファイル、cssファイルなどのリクエストでさえ、HttpModuleでヒットする可能性があるためですが、アプリケーションでは、アプリケーション向けのリクエストのみがヒットします。ブレークポイント(WebフォームおよびASP.NET MVCで認識されるルートのaspx、asmxなど)。

HttpModuleで処理しているリクエストを確認するには、url変数の値を確認してください。

void context_BeginRequest(object sender, EventArgs e) {
    HttpApplication app = (HttpApplication)sender;
    String url = app.Request.Url.OriginalString;
}
于 2012-08-01T16:31:02.703 に答える