Виртуальный путь '/' соответствует другому приложению, что не разрешено. MVC и HangfireC#

Место общения программистов C#
Ответить
Anonymous
 Виртуальный путь '/' соответствует другому приложению, что не разрешено. MVC и Hangfire

Сообщение Anonymous »

Я пробовал другие решения, опубликованные в stackoverflow, и не нашел ни одного работающего, вот моя проблема.

Поэтому я хочу отправить электронное письмо с помощью 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
Ответить

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

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

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

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

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