在Application_Error中获取Session

虎虎0369 2011-01-20 05:54:27
我是想在出错的时候获取该Session["user"]记录错误信息 但始终报 “会话状态在此上下文中不可用 ”异常
请大家说下到底能不能在这里获取session 能获取的话是不是 用的是别的方法
谢谢了
...全文
176 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2011-01-20
  • 打赏
  • 举报
回复
httpContent 被创建当页面请求的时候,所以当文件不存在 错误 httpCode=404的时候无法获取,当其他错误的时候可以获取,和页面获取时是一样的。
string userName = session["userName "].ToString();
Execption ex = Service.GetLastError().GetBaseException();
if(ex.GetType().name="HttpException")
{
HttpException httpEx =(HttpException)ex;
if(httpEx.GetHttpCode()==404)
{
return;
}

虎虎0369 2011-01-20
  • 打赏
  • 举报
回复
上面的代码是一切正常 没报错 什么原因呢
虎虎0369 2011-01-20
  • 打赏
  • 举报
回复
我是公司出现的这个问题 公司是vs2008
不过我刚测试了哈 我自己的电脑确能通过
测试页面:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["user"] = "aaaaaaaaaa";
throw new Exception("ddddddddddddddddddddddddddd");
}
}

Global.asas
void Application_Error(object sender, EventArgs e)
{
string userId = "匿名用户";
if (Session["user"] != null) //这里就报错了
{
userId = Session["user"].ToString();
}
}
确能通过

我自己的电脑同时装了vs2008 和2010 不过我测试是在2008中测试的
求解啊
  • 打赏
  • 举报
回复
我试了一下,asp.net3.5也支持这个上下文中访问Session集合!
  • 打赏
  • 举报
回复
嗯,是Session集合!

我的asp.net4.0就没有问题,可以在Application_Error中访问Session集合。是不是lz应该升级一下系统?
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 min565220 的回复:]


void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
LogError log = new LogError(); // 异常信息类
string userId = "匿名用户";
……
[/Quote]

我还这没想到,这个代码里边访问的Session是什么东西呢?奇怪。
mangchao330688 2011-01-20
  • 打赏
  • 举报
回复
我想的是把错误信息记录下来,提示报错的都是友好提示信息。要看是哪里出错的,看错误信息记录。
虎虎0369 2011-01-20
  • 打赏
  • 举报
回复

void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
LogError log = new LogError(); // 异常信息类
string userId = "匿名用户";
if (Session["user"] != null) //这里就报错了 “会话状态在此上下文中不可用”
{
userId = (Session["user"] as Tb_TgUserInfo).userId;
}
log.LogWriteError(userId, Request); // 调用LogError 记录异常信息
}


大概就这样 而且我判断Session.Count一样会报错
wuyq11 2011-01-20
  • 打赏
  • 举报
回复
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex != null)
{
Response.Write(string.Format("异常信息:{0}<br>", ex.Message));
}
Response.Write(string.Format("Session:{0}<br>", Session["a"]));
Response.End();
}

protected void Page_Load(object sender, EventArgs e)
{
Session["a"] = "";
throw new Exception("error");
}
  • 打赏
  • 举报
回复
[Quote=引用楼主 min565220 的回复:]
我是想在出错的时候获取
[/Quote]
谁知道你是怎么写的呢?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧