在Web项目之外使用HTTPContext的任何问题

时间:2012-11-08 13:58:05

标签: asp.net vb.net

我们有一个Web应用程序,可以在不同的项目中访问业务逻辑和数据访问。

设计方式,密钥值永远不会传递给数据访问层或业务逻辑。相反,业务层有一个类,它包含公共只读属性,DAL层通过该属性访问值。

业务逻辑层位于不同的项目中。 Web项目获得参考。 业务逻辑层具有以下类:Public NotInheritable Class clsUserProfile 哪个有这个属性:

Public ReadOnly Property AgencyCode() As Integer

    Get
        If clsAppInfo.IsWebApplication Then
            If (HttpContext.Current.Session(_AgencyCodeKey) Is Nothing) Then
                Return 0
            Else
                Return HttpContext.Current.Session(_AgencyCodeKey)
            End If
        Else
            Return AgencyCodeWIN
        End If
    End Get

End Property

/ ** 对于Windows代理商代码声明为共享

 Public Shared Property AgencyCodeWIN() As Integer
        Get
            Return _AgencyCodeWIN
        End Get
        Set(ByVal value As Integer)
            _AgencyCodeWIN = value
        End Set

    End Property

/ * ** * 确定它是否是一个Web应用程序.......

Public Shared ReadOnly Property IsWebApplication() As Boolean
    Get
        If AppCodeWIN IsNot String.Empty Then      
                 'Desk top App is required to pass AppInfo
            Return False
        Else                                                  
                 'Web App is default
            Return True
        End If
    End Get
End Property

多个用户登录时是否会覆盖数据。 许多人说这是不可取的,但找不到任何可证明的理由,为什么不推荐它?

如果有人能说出明确的理由那么好。

谢谢, 沙地。

1 个答案:

答案 0 :(得分:0)

  

当多个用户登录时,数据是否会被覆盖

没有

  

很多人说这是不可取的,但找不到任何可证明的理由,为什么不推荐它?

在这种情况下,添加第三种运行模式将是一种痛苦。

实际上,您的类clsUserProfile不应该知道您的应用程序运行模式(webapp或桌面)。它甚至不应该知道HttpContext和Session或者在两种运行模式之间进行选择,只是为了得到一个AgencyCode。

clsUserProfile应该是一个普通的C#对象。运行模式应该在应用程序的更高级别处理。