gpt4 book ai didi

c# - HttpContext 在任务中变为 NULL

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:48 41 4
gpt4 key购买 nike

我为 HttpContext 创建扩展方法。此方法生成 pdf 文件。

public static Task GeneratePdfTask(this HttpContext context, string path, int submissionId, string pdfName, Action<int, byte[]> postAction = null)
{
var local = context;
return Task.Factory.StartNew(() =>
{
HttpContext.Current = local;
SessionHelper.Set(SessionKey.IsPdfRendering, true);
var pdfFile = new PdfGenerator().Generate(path, pdfName, submissionId);
if (postAction != null && pdfFile != null)
{
postAction(submissionId, pdfFile);
}
});
}

有时这个 Session (HttpContext.Current) 变为 NULL,我得到异常。但是不知道为什么。为 session 创建扩展有一些限制吗?也许还有一些其他解决方案如何安全地使用当前 session ?

最佳答案

您不能从多个线程同时使用 HTTP 请求对象,因此这个问题没有实际意义。显式传递要跨线程移动的数据。

解释一下您所看到的:HttpContext.Current 依赖于当前线程(实际上它是逻辑调用上下文)。不要将其设置为某个值。您现在已经劫持了一些无辜的无关线程池线程的 HttpContext.Current。您现在可能会发现不同的 HTTP 请求开始交互。这些错误很难找到。

关于c# - HttpContext 在任务中变为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29891439/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com