如何在asp.net中的线程(任务)下访问HttpConttext.Current

时间:2018-01-02 10:23:02

标签: c# asp.net .net-framework-version

我正在使用.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>

0 个答案:

没有答案