Я пытался использовать Postal на своем сайте MVC5. Когда я размещаю свою веб-страницу на дочернем сайте, т.е. http://localhost/Subsite, я получаю сообщение об ошибке
- Виртуальный путь '/' сопоставляется с другим приложением, что не разрешено
Я отладил его до того, что при создании ControllerContext HttpContext не устанавливается правильно. Поскольку я запускаю Postal из Hangfire, HttpContext.Current всегда равен нулю. Postal создает ContollerContext, используя приведенный ниже код.
ControllerContext CreateControllerContext()
{
// A dummy HttpContextBase that is enough to allow the view to be rendered.
var httpContext = new HttpContextWrapper(
new HttpContext(
new HttpRequest("", UrlRoot(), ""),
new HttpResponse(TextWriter.Null)
)
);
var routeData = new RouteData();
routeData.Values["controller"] = EmailViewDirectoryName;
var requestContext = new RequestContext(httpContext, routeData);
var stubController = new StubController();
var controllerContext = new ControllerContext(requestContext, stubController);
stubController.ControllerContext = controllerContext;
return controllerContext;
}
string UrlRoot()
{
var httpContext = HttpContext.Current;
if (httpContext == null)
{
return "http://localhost";
}
return httpContext.Request.Url.GetLeftPart(UriPartial.Authority) +
httpContext.Request.ApplicationPath;
}
Как я могу указать UrlRoot, чтобы вместо того, чтобы извлекать значение по умолчанию для локального хоста, чтобы извлекать его на основе моего дочернего сайта?