我爲HttpContext創建擴展方法。這種方法生成PDF文件。HttpContext在任務中變爲NULL
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 – demo