Поэтому я хочу отправить электронное письмо с помощью Hangfire через мое приложение MVC, это работает на моем локальном компьютере, но когда я загружаю его на удаленный сервер, я получаю следующую ошибку при Hangfire:
The virtual path '/' maps to another application, which is not allowed
Это код, который я использую для отправки электронного письма:
foreach (var EmailEntry in EmailEntries)
{
var email = new EmailTemplateModel
{
ViewName = "EmailTemplateModel",
FromAddress = "donotreply@emailservice.com",
EmailAddress = EmailEntry,
Subject = "Task Report",
Date = Dates,
Task = DatesAndTasks,
};
email.Send();
}
Когда я использую метод «ViewName», он возвращает «~/Views/Emails» на моем локальном компьютере.
Внутри метода Send():
// Summary:
// Convenience method that sends this email via a default EmailService.
public void Send();
Структура приложения в IIS:
Сервер > Сайты > По умолчанию > MyApplication
Проблема, возникающая в решении JodyL ниже:
StructureMapDependencyScope.get_CurrentNestedContainer()

Решение:
Отредактировал следующий код в «StructureMapDependencyScope» класс:
До:
public IContainer CurrentNestedContainer {
get {
return (IContainer)HttpContext.Items[NestedContainerKey];
}
set {
HttpContext.Items[NestedContainerKey] = value;
}
}
После:
public IContainer CurrentNestedContainer {
get {
IContainer container = null;
if (HttpContext != null)
container = (IContainer)HttpContext.Items[NestedContainerKey];
return container;
}
set {
HttpContext.Items[NestedContainerKey] = value;
}
}
До:
private HttpContextBase HttpContext {
get {
var ctx = Container.TryGetInstance();
return ctx ?? new HttpContextWrapper(System.Web.HttpContext.Current);
}
}
После:
private HttpContextBase HttpContext {
get {
var ctx = Container.TryGetInstance();
if (ctx == null && System.Web.HttpContext.Current == null)
return null;
return ctx ?? new HttpContextWrapper(System.Web.HttpContext.Current);
}
}
Подробнее здесь: https://stackoverflow.com/questions/495 ... ed-mvc-and
Мобильная версия