如何解决业务类无法引用HTTPContext
| 我在解决方案中将业务层设置为另一个C#项目,我需要调用HttpContext,但是无论我如何尝试,都无法正确引用它。 我尝试过让Visual Studio顺利获取所需的引用,也尝试过手动放置对System.Web的引用,但是这些似乎不起作用。 我也注意到找不到Session。 以下是我使用的代码段using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace BussinessLayer
{
class UserPermissions
{
public void redirectToLogin()
{
if (Session[\"user\"] == null)
{
HttpContext.
if (HttpContext.Current.Request.Cookies[\"userName\"] == null)
{
HttpContext.Current.Response.Redirect(\"/login.aspx\");
}
}
}
}
}
有人知道找不到HttpContext或Session吗?
解决方法
这与针对.NET 4客户端配置文件有关。您可以通过将项目重新定位到完整的.NET Framework 4来解决此问题。
, HttpContext.Current不适合用于业务层,可以使用HttpContextBase代替
public static class HttpContextHelper {
private static object lockObj = new object();
private static HttpContextBase mockHttpContext;
/// <summary>
/// Access the HttpContext using the Abstractions.
/// </summary>
public static HttpContextBase Current {
get {
lock (lockObj) {
if (mockHttpContext == null && HttpContext.Current != null) {
return new HttpContextWrapper(HttpContext.Current);
}
}
return mockHttpContext;
}
set {
lock (lockObj) {
mockHttpContext = value;
}
}
}
}
, 您需要引用可以在GAC中找到的System.Web.dll(我的VS2010在\'。NET References \'中未显示它,因此我必须手动添加它)。
另外,如果您要分离业务层,则最好使它更独立,更松散耦合。
, 您确实,真实,诚实地不需要从业务层引用reference2ѭ。如果您这样做,那么它将不再是业务层。它是表示层的一部分,对表示引擎具有硬编码依赖性。
当表示层调用时,应将“ 2”中需要的任何值提供给业务层对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。