このチェックを HttpModule に追加したところ、機能しました。
' Skip the module for non aspx requests like .axd or url without default document
Private Sub Application_PostAuthenticateRequest(ByVal source As Object, ByVal e As EventArgs)
Dim request = DirectCast(source, HttpApplication).Request
If request.CurrentExecutionFilePathExtension.ToLower <> ".aspx" Then
Exit Sub
End If
これは PostAuthenticateRequest にフックされます。OnEndRequest などの他のイベントにフックする場合は、HttpApplication ではなく HttpContext にアクセスできることに注意してください。代わりにこれを追加してください。
Protected Overridable Sub OnEndRequest(context As HttpContext)
' Skip the module for non aspx requests like .axd or url without default document
Dim request = context.Request
If request.CurrentExecutionFilePathExtension.ToLower <> ".aspx" Then
Exit Sub
End If
また、 http://www.yoursite.comなどのドキュメントなしで URL を呼び出す場合、 IIS はhttp://www.yoursite.com/Default.aspx (または設定した定義ドキュメント)への要求をトリガーすることに注意してください。したがって、ページが空の場合でも、2 つのリクエストがトリガーされます。IIS サイトには、「既定のドキュメント リクエストの場合、最初のリクエストは拡張子のない URL に対するものです。したがって、IIS は、最初のリクエスト処理中に、マネージ ハンドラーの前提条件でマークされたマネージ モジュールを実行しません。」と述べています。しかし、そうではありません。http://www.yoursite.com/のようなリクエストで属性 precondition="managedHandler" でマークされた HttpModule でもそれでも 2 回トリガーされます (1 つは / 用、もう 1 つは /Default.asp 用)。とにかく、上記の回避策を使用すると、これも解決します。