c# - 将 session 和响应对象传递给类 - 开销?

标签 c# asp.net session response overhead

我想知道是否有人可以帮助我了解我所做的事情是否会产生大量开销。它目前正在运行,但我不确定这是否会减慢网站速度。 我有一个工作流程对象类,在其中设置所有 session 变量。这个类在需要它的页面上实例化:

WorkFlowObj wfo = new WorkFlowObj(this.Session, this.Response); wfo.VendorRedirect();

我需要这个,因为我需要能够跟踪 session 变量,同时能够在一个地方跟踪更复杂的页面工作流程。这个解决方案已经对我有用,但唯一的问题是我不确定传递 session 和响应对象是否会产生大量开销。谁能告诉我这是否效率非常低?以下是workflowobj 类的代码。

    public class WorkFlowObj
    {
        private System.Web.SessionState.HttpSessionState _pagesession;
        private HttpResponse _HttpResponse;

        private int _userid;
        private string _vendorname;
         ///private other vars here
     }
    public int UserID
    {
        get
        {
            return _userid;
        }
    }


    public WorkFlowObj(System.Web.SessionState.HttpSessionState pagesession, HttpResponse _response)
    {
        _pagesession = pagesession;
        _HttpResponse = _response;
         Initialize();

    }

    private void Initialize()
    { 
    //initialize variables from session
    _userid=_pagesession["userid"].ToString();
    }


    public void VendorRedirect()
    {
        switch (this._vendorname)
        {

            case "1":
                this._HttpResponse.Redirect(page1);
                break;
            case "2":
                this._HttpResponse.Redirect(page2);
                break;
                //etc
            default:
                //dostuff;
                break;
        }
    }
}

最佳答案

正如 Rick 所说,如果可以避免的话,我不会在中间层对象中创建对 System.Web 的依赖项。

但如果无法避免,则可以使用静态 System.Web.HttpContext 类来避免传递 Session 对象。这可以让你做类似的事情:

userid = (String)System.Web.HttpContext.Current.Session["userid"];

只要它与浏览器的请求在同一线程上执行(因此在同一上下文中)。

关于c# - 将 session 和响应对象传递给类 - 开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217648/

相关文章:

asp.net - 如何在 ASP.NET Response 中传递大文件?

c# - 使用嵌入字符串中的大括号反序列化 JSON

c# - XElement 中的 string.Format 未格式化

c# - 如何固定字节数组?

c# - 在 ASP.NET 中使用Where子句

ruby-on-rails - Rails 应用程序中的 guest 用户功能,在 session 中设计 + 存储

c# - 有没有办法使用 C# 检查文本是西里尔字母还是拉丁字母?

c# - 有没有其他方法可以在不使用 WebRequestMethods.Ftp.ListDirectory 方法的情况下测试 FTP 服务器的连接?

c# - 如何在 ASP.NET 的所有页面中维护 session ?

c# - 检查 session 中是否已存在数组