我想知道是否有人可以帮助我了解我所做的事情是否会产生大量开销。它目前正在运行,但我不确定这是否会减慢网站速度。 我有一个工作流程对象类,在其中设置所有 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/