我一直在尝试在我的 MVC5 网站上使用 Postal。当我将网页托管一个子站点时,即http://localhost/Subsite我收到错误
- 虚拟路径“/”映射到另一个应用程序,这是不允许的
我已将其调试到创建 ControllerContext 时,HttpContext 设置不正确。由于我从 Hangfire 运行 Postal,因此 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 以便根据我的子站点而不是拉取 localhost 的默认值来拉取它?