如何将 HttpContext.Current 传递给使用 .net 中的 Parallel.Invoke() 调用的方法

2024-01-11

我有两种利用 HttpContext.Current 来获取 userID 的方法。当我单独调用这些方法时,我得到了 userID,但是当使用相同的方法调用时 Parallel.Invoke() HttpContext.Current 为 null。

我知道原因,我只是在寻找可以访问 HttpContext.Current 的解决方案。我知道这不是线程安全的,但我只想执行读操作

public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Display();
            Display2();
            Parallel.Invoke(Display, Display2);
        }

        public void Display()
        {
            if (HttpContext.Current != null)
            {
                Response.Write("Method 1" + HttpContext.Current.User.Identity.Name);
            }
            else
            {
                Response.Write("Method 1 Unknown" );
            }
        }

        public void Display2()
        {

            if (HttpContext.Current != null)
            {
                Response.Write("Method 2" + HttpContext.Current.User.Identity.Name);
            }
            else
            {
                Response.Write("Method 2 Unknown");
            }
        }
    }

谢谢


存储对上下文的引用,并将其作为参数传递给方法......

像这样:

    protected void Page_Load(object sender, EventArgs e)
    {
        var ctx = HttpContext.Current;
        System.Threading.Tasks.Parallel.Invoke(() => Display(ctx), () => Display2(ctx));
    }

    public void Display(HttpContext context)
    {
        if (context != null)
        {
            Response.Write("Method 1" + context.User.Identity.Name);
        }
        else
        {
            Response.Write("Method 1 Unknown");
        }
    }

    public void Display2(HttpContext context)
    {

        if (context != null)
        {
            Response.Write("Method 2" + context.User.Identity.Name);
        }
        else
        {
            Response.Write("Method 2 Unknown");
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 HttpContext.Current 传递给使用 .net 中的 Parallel.Invoke() 调用的方法 的相关文章

随机推荐

  • 从现有 docker 容器中删除端口绑定

    目前我有一个用以下命令创建的容器 docker run detach name gitlab app restart always publish 192 168 0 200 80 80 publish 192 168 0 200 22 2
  • 步骤向导形式

    我正在使用角度动态表单进行角度应用程序 我需要将表单分成两部分 其中我有输入字段firstname and lastname在第一页 然后单击下一个按钮 其中的子项email and dropdown需要加载 Html
  • window.URL.revokeObjectURL() 不会立即释放内存(或根本不释放内存)?

    我正在制作一个 html 界面 通过拖放和多个选择文件将图像上传到服务器上 我想在将图片发送到服务器之前显示它们 所以我首先尝试使用FileReader但我遇到了一些问题 比如这个帖子 https stackoverflow com que
  • CSS 框阴影不是真正透明的?

    这是一叠 8 个白色框阴影 底部为蓝色背景渐变 其他地方为白色背景 按照我的逻辑 白色背景上的白色框阴影应该会产生白色 但显然有一个灰色的边缘将白色 div 与白色背景的其余部分分开 生成这个的 css 是 content sidebar
  • 使用 SQLITE 为 Google App Engine 进行本地 Django 开发?

    我正在使用 Google App Engine 在 Django 中进行开发 对于生产 我计划使用 Google Cloud SQL 但对于本地开发 我想使用简单的 SQLITE 谷歌教程 https developers google c
  • 无法使用 NHibernate 加入分布式事务

    我在单元测试中发现一个问题 Oracle 抛出异常并显示消息 无法加入分布式事务 我们正在使用 ODP net 和 NHibernate 在嵌套事务内对数据库进行一定数量的提交后 就会出现此问题 令人烦恼的是 这在持续集成服务器 Windo
  • 在嵌套匿名结构上忽略 C++ 私有修饰符

    以下示例代码在 Visual C 中编译得很好 class Test private struct struct int privateData int main int char Test test test privateData 0
  • 使用 PHP + XDEBUG 时在 VS Code 中显示长字符串

    我正在使用 VS Code 进行 PHP Web 开发 带有 XDEBUG 的 VS Code 在显示字符串值变量方面似乎受到严重限制 变量和监视窗口仅限于窗口宽度或第一个换行符 您可以通过评估字符串在调试控制台中显示更多内容 但最多只能超
  • 找不到类“android.app.Notification$Builder”

    我已将 android support v4 jar 添加到我的项目库中 但我收到此错误 Could not find class android app Notification Builder referenced from metho
  • SVG 变换旋转 90、180 或 270 度,在 Safari iOS 10 中不适用于圆形

    我想通过设置使用 SVG 圆形元素创建一个圆环图stroke dasharray和变化的stroke dashoffset SVG 元素需要旋转 270 或 90 度才能使图表 条 从顶部开始 这是代码 http jsfiddle net
  • 有没有办法使用 std textio 在 vhdl 中多次读取文件?

    我试图了解如何在 vhdl 中读取文件 如果我打开一个文件 通读它 测试文件结尾 关闭文件 然后重新打开该文件 然后再次开始读取 它会从开头开始吗 文件 非常感谢 向 VHDL 语言的权威寻求答案 IEEE 标准 1076 2008 5 5
  • C++ Win32 API 删除带进度条的文件

    使用Windows API 有没有办法删除一个大文件 比如说1GB 并以某种方式监控进度 我确信这是可能的 但我不知道从哪里开始 编辑 应该更具体 我想将文件移动到回收站 并显示类似于探索的进度条 尽管我可能希望在控制台或其他东西中显示进度
  • Wamp 2.2 安装 PEAR

    我的操作系统是Windows 7 我的电脑上安装了 WAMP2 2 然后我尝试安装PEAR 然而 我找不到我的go pear bat文件在我的 wamp 目录中 美好的 我在这里下载 http pear php net go pear ph
  • 将大文件从 Google Cloud Storage 加载到 Google Cloud Functions 中?

    有没有办法将大文件 gt 100MB 从 Google Cloud Storage 加载到 Google Cloud Functions 中 我在他们的书中读到quotas https cloud google com functions
  • 从 bash 脚本更改导出变量的值

    我从 bash shell 执行了以下操作 export myPath home user dir 然后我通过从 shell 和 bash 脚本内部 回显 该值来验证该值 两者都工作得很好 然后我尝试从这样的脚本内部设置该变量的值 myPa
  • 在 Django 中存储用户活动

    我正在寻找存储用户的活动 但我不确定将其存储在哪里 我不认为数据库是一个选择 因为它会非常大 我想知道 Facebook Dropbox 等网站如何记住特定用户的所有活动 并且它不能存储在会话中 因为这不是特定于会话的而是特定于用户的 请帮
  • 将响应从 AFHTTPRequestOperation 传递到 UIWebview

    我的代码向服务器发出两个请求 一种是直接进入 uiwebview 另一种是通过 AFHTTPRequestOperation 我想使用 AFHTTPRequestOperation 并将响应传递到我的 uiwebview 中 将响应传递到
  • 通过 Producer 类将 RequestScoped CDI Bean 注入 ApplicationScoped CDI Bean

    本文介绍了您可以将 RequestScoped beans 注入 ApplicationScoped beans 并且客户端代理将在请求期间指向正确的实例 较短范围的 Bean 实例注入到 CDI 中较大范围的 Bean 实例中 它是如何工
  • 如何检查 ruby​​ 中是否定义了私有方法

    我能找到的最接近的是在 Ruby 中 如何检查方法 foo 是否已定义 https stackoverflow com questions 2348521 in ruby how do i check if method foo is de
  • 如何将 HttpContext.Current 传递给使用 .net 中的 Parallel.Invoke() 调用的方法

    我有两种利用 HttpContext Current 来获取 userID 的方法 当我单独调用这些方法时 我得到了 userID 但是当使用相同的方法调用时 Parallel Invoke HttpContext Current 为 nu