Почтовая программа MVC конфликтует с Mvc.Unity4C#

Место общения программистов C#
Ответить
Anonymous
 Почтовая программа MVC конфликтует с Mvc.Unity4

Сообщение Anonymous »

У меня возникла странная проблема при попытке использовать Postal в приложении MVC, которое также использует Mvc.Unity4.

Я считаю, что проблема возникает из-за отсутствия доступа к HttpContext.

Я пытаюсь отправить электронное письмо изнутри одного из моих контроллеров с помощью Postal:

dynamic e = new Email("AccountActivation");
e.To = "name@email.com"
e.Send();


Попытка отправить электронное письмо приводит к следующему исключению в Unity.Mvc4.UnityDependencyResolver:

[NullReferenceException: Object reference not set to an instance of an object.]
Unity.Mvc4.UnityDependencyResolver.get_ChildContainer() +57
Unity.Mvc4.UnityDependencyResolver.GetService(Type serviceType) +241
System.Web.Mvc.DefaultViewPageActivator.Create(ControllerContext controllerContext, Type type) +87
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +216
Postal.EmailViewRenderer.RenderView(IView view, ViewDataDictionary viewData, ControllerContext controllerContext, ImageEmbedder imageEmbedder) +182
Postal.EmailViewRenderer.Render(Email email, String viewName) +204
Postal.EmailService.CreateMailMessage(Email email) +72
Postal.EmailService.Send(Email email) +65


Я не слишком знаком с Mvc.Unity4, так как он был добавлен другим разработчиком.

Взявшись за соломинку, я попытался зарегистрировать правильные типы Postal в Application_Start. Инициализация контейнера Unity происходит в Bootstrapper.cs:

container.RegisterType(new InjectionConstructor());
container.RegisterInstance(new EmailService());


В моем контроллере есть:

private IEmailService _emailService;
public UsersController()
{
_emailService = new Postal.EmailService();
}

public UsersController(Postal.EmailService emailService)
{
_emailService = emailService;
}

[HttpPost]
public async Task SendEmail(EmailViewModel viewModel)
{
dynamic e = new Email("AccountActivation");
e.ViewData.Add("To", "name@email.com");
e.ViewData.Add("From", "no-reply@email.com");
_emailService.Send(e);

More code...
}


Подробнее здесь: https://stackoverflow.com/questions/283 ... mvc-unity4
Ответить

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

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

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

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

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