【发布时间】:2012-04-15 12:50:33
【问题描述】:
我很想在 dataAceess 层中使用 HttpContext,但我无法从 HttpContext 创建对象
HttpContext httpContext = HttpContext.Current;
我创建了一个 Web 应用程序和一个 libery 项目,我想在 libery 项目中使用 HttpContext,如下所示:
public static Context GetContextPerRequest()
{
HttpContext httpContext = HttpContext.Current;
if (httpContext == null)
{
return new Context();
}
else
{
int contextId = Thread.CurrentContext.ContextID;
int hashCode = httpContext.GetHashCode();
string key = string.Concat(hashCode, contextId);
Context context = httpContext.Items[key] as Context;
if (context == null)
{
context = new Context();
httpContext.Items[key] = context;
}
return context;
}
}
我使用 .net 4。
【问题讨论】:
-
数据访问层应该不依赖于像
HttpContext这样的面向UI的组件。这样做会强烈地将您的“数据访问层”与 ASP.NET Web 应用程序联系起来——您将无法将其用于例如WCF 服务或 WPF 应用程序......我认为这是一个非常非常糟糕的设计...... -
最简单的解决方案是添加对 System.Web 的引用
标签: asp.net entity-framework c#-4.0 entity-framework-4.1