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

我的猜测是IsReusable返回 true 会导致您的问题。它将导致值被保留,因为该对象被多个请求重用。

于 2012-12-09T21:22:30.193 回答