【发布时间】:2015-04-27 09:08:22
【问题描述】:
我为 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);
}
});
}
有时此会话 (HttpContext.Current) 变为 NULL,我得到异常。但不知道为什么。为 Session 创建扩展有一些限制吗?也许还有其他解决方案如何安全地使用当前会话?
【问题讨论】:
-
为什么是
Task.Factory.StartNew而不是Task.Run?您是在 .NET 4.0 还是 4.5 中工作? 4.5 修复了在异步 ASP.NET 中配置 HTTP 上下文的几个问题 -
@PanagiotisKanavos,.NET 4.5.1
标签: c# asp.net asynchronous task httpcontext