質問

httpcontext.current.requestオブジェクトにアクセスしようとすると、その例外が得られます。

私は回答を見ました L1, L2L3 ...だから...私の質問は次のとおりです。

今、世界の何のために?

通話が5月に入るたびにヒットするモジュールを開発したかったので、URLにアクセスしたURL、ユーザーIPアドレスなどを記録できますが、IIS7ではもうできないようです。回避策はありますか? (「クラシックモード」への切り替え以外)。

Alt Text http://userserve-ak.last.fm/serve/126/24432467.jpg

乾杯。

役に立ちましたか?

解決

いつやってるの?モジュールイベントにありますか?統合されたプールでも完全に実行可能である必要があります。ボトムライン統合モードで実行するときにASP.NETフックがIISにどのように「より多くのファーストクラス」になるかについての変更があります。これは、特定のイベントが以前に発砲することを意味します。たとえば、Application_startは実際のリクエストのコンテキストの外で発砲します。他の例は、IISが認証される前でさえ冒険が行われているので、Windows認証アイデンティティをBeginRequestに持っていることを期待しています。

アプリケーションが古い悪い動作に依存している場合、AppPoolを変更してクラシックモードで実行することができ、正常に機能します。

beginrequest、endrequest、postauthorizerequestなど、リクエスト固有の通知でリクエストを取得できるはずです。また、httpcontext.currentを使用することをお勧めします。特にモジュールのコンテキストで、他の方法で直接コンテキストを取得するため、たとえばBeginRequestを処理する場合は、できるはずです。

    HttpApplication application = (HttpApplication)sender;  
    HttpContext context = application.Context;  

そして、あなたはルックアップを保存します。

あなたの説明から、beginrequestとendrequestを処理するモジュールを実装する必要があるように聞こえます。

他のヒント

私はこれを元々コメントとして投稿しました。それは実際には答えではありませんが、あなたが「回り」を探しているのを見ました。

/app_code/basepage.vb

 Public Class BasePage : Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ''# Do all your logging here
    End Sub
 End Class

/default.aspx.vb

Partial Class _Default : Inherits BasePage
    ''# This is simply your code behind for each page (notice it inherits BasePage)
    ''# You can still have your Page_Load events along with custom methods in here, 
    ''# and it will not affect the logging portion of your app.
End Class

基本的に、あなたがしていることは、どのページがロードされていても、すべてのページロードで同じ作業を行う単一のクラスを作成することです。その後、アプリケーション内の各ページは BasePage それをアクティブにするためのクラス。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top