Я создаю метод расширения для 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);
}
});
}
Иногда Session (HttpContext.Current
) становятся NULL, и я получаю исключение. Но не знаю почему. Есть ли ограничение на создание расширений для сеанса? Может быть, есть еще одно решение, как безопасно использовать текущий сеанс?
Почему 'Task.Factory.StartNew' вместо' Task.Run'? Вы работаете в .NET 4.0 или 4.5? 4.5 исправляет несколько проблем с настройкой HTTP-контекста в асинхронном ASP.NET. –
@PanagiotisKanavos, .NET 4.5.1 – demo