【问题标题】:HttpContext.Current.Session is throwing exception(Object reference not set to an instance of an object.) in business classHttpContext.Current.Session 在业务类中抛出异常(对象引用未设置为对象的实例。)
【发布时间】:2021-09-30 16:10:46
【问题描述】:

在我们的应用程序中,我们必须访问业务类中的会话对象。我们正在使用 HttpContext.Current.Session 来获取会话值。在某些情况下,它返回值,但主要是抛出空引用异常(对象引用未设置为对象的实例)。我们有以下代码 试试

如果 HttpContext.Current.Session("Username") IsNot Nothing 那么 '要执行的语句 万一 抓住前任作为例外 '登录到数据库 结束尝试

这里 HttpContext.Current.Session("Username") 主要是抛出异常“对象引用未设置为对象的实例” 在调试时我们发现 HttpContext.Current 本身什么都不是。

谢谢。对此的任何帮助将不胜感激。

【问题讨论】:

  • 代码是否确实在对您的 Web 应用程序的请求上下文中执行,而不是在应用程序启动事件中执行,在这种情况下将没有 HttpContext
  • “在某些情况下它返回值但大多数情况下不返回值”这一事实表明@Nick Champion 走在了正确的轨道上。在 Web 应用程序之外访问 httpcontext 是一种不好的做法,因为它会阻止类库在 Web 应用程序之外使用。
  • 嗨,我能够获取 HttpContext.Current.Session("Username") 的值,除此之外,所有值都因为对象引用未设置为对象实例而出现异常

标签: asp.net session


【解决方案1】:

如果生产机器是IIS,有“WebSocket协议”的安装。

如果生产机器是nginx,需要设置“proxy_set_header Connection”升级“;”。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 示例服务器 { server_name yyy.domain * .yyy.domain; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header 升级 $ http_upgrade; proxy_set_header 连接“升级”; ← 改成这样 proxy_set_header Host $host; proxy_cache_bypass $ http_upgrade; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $ 方案; } }
  • 我用英文写的。
  • 您最近的评论包含大量未格式化的代码。如果打算将其作为答案的一部分,请edit将其放入答案中,格式正确,然后删​​除评论。
  • 另外,请对答案中的任何代码进行编码格式(带反引号)。
猜你喜欢
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多