Использование Postal с QueueBackgroundWorkItem — невозможно создать область действия запроса > потому что HttpContext неC#

Место общения программистов C#
Ответить
Anonymous
 Использование Postal с QueueBackgroundWorkItem — невозможно создать область действия запроса > потому что HttpContext не

Сообщение Anonymous »

Я использую Postal для отправки электронных писем.
Мое приложение — это приложение ASP.net MVC. Я использую Autofac (интеграция MVC5)

Я настроил Postal следующим образом:

Код: Выделить всё

        dynamic email = new Email("TemplateName");
email.To = "test@email.com";
email.From = "sendertest@email.com";

email.TemplateValue = "This is a value";

var service = new EmailService();

HostingEnvironment.QueueBackgroundWorkItem(ct =>
{
service.Send(email);
});
Это завершается с ошибкой:


Исключение типа «System.InvalidOperationException» произошло в
Autofac.Integration.Mvc.dll, но не было обработано в коде пользователя.

Дополнительная информация: область действия запроса не может быть обработана. быть создан
, поскольку HttpContext недоступен.

Код: Выделить всё

   at Autofac.Integration.Mvc.RequestLifetimeScopeProvider.GetLifetimeScope(Action`1 configurationAction)
at Autofac.Integration.Mvc.AutofacDependencyResolver.get_RequestLifetimeScope()
at Autofac.Integration.Mvc.AutofacDependencyResolver.GetService(Type serviceType)
at System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create(ControllerContext controllerContext, Type type)
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
at Postal.EmailViewRenderer.RenderView(IView view, ViewDataDictionary viewData, ControllerContext controllerContext, ImageEmbedder imageEmbedder)
at Postal.EmailViewRenderer.Render(Email email, String viewName)
at Postal.EmailService.CreateMailMessage(Email email)
at Postal.EmailService.Send(Email email)
at CallSite.Target(Closure , CallSite , EmailService , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1)
at EmailSender.c__DisplayClass3_0.b__0(CancellationToken ct) in .....EmailSender.cs:line 42
at System.Web.Hosting.HostingEnvironment.c__DisplayClass91_0.b__0(CancellationToken ct)
at System.Web.Hosting.BackgroundWorkScheduler.d__7.MoveNext()
Если я возьму сервис.Send(email); из QueueBackgroundWorkItem, это сработает.

Я понимаю, что это потому, что HttpContext.Current недоступен, но есть ли способ отправлять электронные письма с помощью Postal в фоновом потоке?

Подробнее здесь: https://stackoverflow.com/questions/360 ... -cannot-be
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»