Я использую почтовый адрес для отправки электронной почты. Мое приложение - приложение ASP.net MVC. Я использую Autofac (MVC5 интеграции)Использование Postal с QueueBackgroundWorkItem - область ожидания запроса не может быть создана>, потому что HttpContext недоступен
Я настроил Postal так:
dynamic email = new Email("TemplateName");
email.To = "[email protected]";
email.From = "[email protected]";
email.TemplateValue = "This is a value";
var service = new EmailService();
HostingEnvironment.QueueBackgroundWorkItem(ct =>
{
service.Send(email);
});
Это не может со следующей ошибкой:
An exception of type 'System.InvalidOperationException' occurred in Autofac.Integration.Mvc.dll but was not handled in user code
Additional information: The request lifetime scope cannot be created because the HttpContext is not available.
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.<Handle>b__0(CancellationToken ct) in .....EmailSender.cs:line 42
at System.Web.Hosting.HostingEnvironment.<>c__DisplayClass91_0.<QueueBackgroundWorkItem>b__0(CancellationToken ct)
at System.Web.Hosting.BackgroundWorkScheduler.<RunWorkItemImpl>d__7.MoveNext()
Если я беру service.Send(email);
из QueueBackgroundWorkItem
он работает.
Я понимаю, что это потому, что HttpContext.Current
недоступен - но есть ли способ, по которому я могу отправлять электронные письма, используя Postal на фоновом потоке?
Привет, Я столкнулся с этой проблемой, вы можете дать мне больше рекомендаций о том, как реализовать это решение. Как отправить электронное письмо после его создания с использованием собственного экземпляра smtpClient – Diin