MVC5 サイトで Postal を使用しようとしています。Web ページをサブサイト、つまりhttp://localhost/Subsiteでホストすると、エラーが発生します
- 仮想パス「/」は許可されていない別のアプリケーションにマップされています
ControllerContext が作成されているときまでデバッグしましたが、HttpContext が正しく設定されていません。私は Hangfire から Postal を実行しているので、HttpContext.Current は常に null です。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;
}
サブサイトに基づいてデフォルトの localhost をプルする代わりに、UrlRoot を指定するにはどうすればよいですか?