0

仕事中のアプリケーションでしばらくの間私を悩ませてきた問題について、助けが必要です。

エッセンシャル VB.net で記述された HTTP ハンドラーを使用していますが、これは時々奇妙な動作を示すようです。以下は、エラーが表示されるコードのサンプルです。一部の変数は会社のデータを保持しているため、変数を単純化しました

Public Class wmf
Implements IHttpHandler, IRequiresSessionState

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
    Get
        ' Return false in case your Managed Handler cannot be reused for another request.
        ' Usually this would be false in case you have some state information preserved per request.
        Return True
    End Get
End Property

Private EmployeeID As string
Private Category As string


Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

'' handles user session and writes to database using the private variables above.

End Sub

これはほとんど疑似コードです (ベスト プラクティスは無視してください) が、セッション データ (またはインスタンス化ごとに異なる可能性のあるデータ) からデータが入力されると、このクラスのプライベート変数がときどき見える、または見えるという問題がありました。 ) 共有 (静的) 変数のように振る舞います。

このようなプライベート変数を HTTP ハンドラーに配置すると、同時実行の問題が発生する複数のユーザーがヒットすることに問題があると思われる方はいらっしゃいますか?

私は実際に、基本的なロガーを使用してこのクラスを作成し、変数がサイトにアクセスしてこのクラスのインスタンスを作成したユーザーからの値を保持することを示しました。それはセットアップの方法で可能ですか、それとも私はこれを想像していますか?

洞察をありがとう

4

1 に答える 1

3

私の推測では、IsReusabletrue を返すと問題が発生する可能性があります。オブジェクトが複数のリクエストで再利用されるため、値が保持されます。

于 2012-12-09T21:22:30.193 に答える