我意识到会话和REST并不完全齐头并进,但是使用新的Web API无法访问会话状态吗?HttpContext.Current.Session永远是空的.
我有一个带有c#代码的asp.net项目.我有一个名为GlobalVariable的静态类,我存储了一些信息,例如当前选择的产品.
但是,我看到当有两个用户使用该网站时,如果有人更改了所选产品,则会为每个人更改.静态变量似乎与每个人都是共同的.
我想创建(来自c#代码)某种会话变量,它只使用c#代码,但不仅来自页面,而且来自任何类.
我目前正在实现自己的会话提供程序,并且想知道如果配置文件中的条目不存在,或者我的会话提供程序是否应该从其他地方获取,则会话提供程序中是否设置了默认的20分钟.
当使用此签名生成新的异步线程时,ASP.NET会话对象是否可用于此新线程?
IAsyncResult asyncCall = f.BeginInvoke(null, f);
Run Code Online (Sandbox Code Playgroud) 我有一个ASHX文件:
你调用的对象是空的.
在线上:
HttpContext.Current.Session["loggedIn"] = true
Run Code Online (Sandbox Code Playgroud)
这是我如何正确使用会话?
在什么情况下HttpContext.Current.Session可以为null?
我有一些asp.net页面.
我只是想知道为什么我应该一直检查对象的Session对象?
例如
public static object GetSession(string key)
{
if (HttpContext.Current.Session != null)
{
return HttpContext.Current.Session[key];
}
return null;
}
Run Code Online (Sandbox Code Playgroud) 我正在一个带有 C# 后端的 ASP.NET 网站上工作。De webserver 运行在远程服务器上,因为我需要位于客户端 pc 上的一些数据(例如:用户 ID),我编写了一个客户端和服务器应用程序。因此,当用户启动客户端应用程序时,它连接到网络服务器但尚未加载页面,网络服务器启动我的服务器,要求客户端提供一些数据。客户端响应后,服务器拥有所需的数据,并为客户端加载网页。
为了轻松访问用户的某些属性,我想使用 Session 变量。但是当客户端将其数据发送到服务器时,Session 变量尚不可用。当我尝试访问它时,我得到一个 NullReferenceException。我相信这是因为 Application_AcquireRequestState 事件尚未触发(位于 Global.asax.cs)。因为我需要使用客户端的数据,所以我把它保存在一个静态类中,这样我就可以随时轻松访问它。
有没有更好的解决方案?我想到了等待 Application_PostAcquireRequestState 事件触发,因为我认为 Session 变量在那个时候是可用的。这样我就可以将静态类中的数据加载到用户的会话变量中。这是一个好主意,还是我应该坚持当前的情况(静态类)?因为它有效,但感觉这不是最好的方法。
提前致谢!
我在global.asax文件中编写了以下代码
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
ConnStr = objConnStr.GetConnectionString();
if (HttpContext.Current.Session["LOGIN"] != null )
{
}
}
Run Code Online (Sandbox Code Playgroud)
它在*HttpContext.Current.Session ["LOGIN"]*中抛出以下错误
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例.
可能是什么问题?