我正在使用.net framework 4.5
,以下是从HttpConttext.Current
获取会话的示例asp.net应用程序代码,但HttpConttext.Current
始终返回null。早些时候我使用.net框架版本4.0,但当我谷歌这个问题时,我发现一些链接,建议将.net框架版本从4.0更改为4.5以解决此问题,但它仍然无法正常工作。
我也使用了这个应用程序设置,但没有运气
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
代码背后
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["UserName"] = "neeraj";
}
protected void btnGetHttpContext_Click(object sender, EventArgs e)
{
string name = Convert.ToString(HttpContext.Current.Session["UserName"]);
TestContext t = new TestContext();
t.GetContext();
}
}
TestContext.cs
using System;
using System.Threading.Tasks;
using System.Web;
public class TestContext
{
public void GetContext()
{
StartTask();
}
public void StartTask()
{
var TaskInit = new Task(() =>
{
});
var Task1 = TaskInit.ContinueWith(a =>
{
Task2();
});
TaskInit.Start();
}
private void Task1()
{
}
private void Task2()
{
string s = Convert.ToString(HttpContext.Current.Session["UserName"]); //HttpContext.Current always return null
}
}
的Web.config
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<httpRuntime targetFramework="4.5"/>
<compilation debug="true"/>
</system.web>
</configuration>