使用UrlHelper类时指定备用VirtualDirectory

时间:2015-04-14 11:50:18

标签: c# .net asp.net-mvc routes

我有以下Web应用程序架构,使用ASP.Net MVC 5.2.2,每个网站都有虚拟目录。

  • 本地主机/的 AUTH
  • 本地主机/的 web1的
  • 本地主机/的 web2的

我希望使用来自所有三个(n)应用程序的标准Url.Action()路由。

我已经通过创建一个额外的项目来实现一个部分工作的示例,以便为我的Web应用程序提供路由以供参考。

var routeCollection = new RouteCollection();
var requestContext = HttpContext.Current.Request.RequestContext;

SampleApp.Routing.Web1RouteConfig.RegisterRoutes(routeCollection);
var Web1UrlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext, routeCollection);

这允许我打电话

@Web1UrlHelper.Action("Test", "Test", { entityId = new Guid() });

并将呈现我在 SampleApp.Routing 项目中 Web1RouteConfig 类定义的{guid} / {controller} / {action}的正确网址格式。

问题是URL构建器保留了调用UrlHelper类的虚拟目录。

这意味着(从web2调用时)我的网址格式错误为:

本地主机/的 web2的 / 997d0d58-5f09-4431-9b2e-88a247bd334b /测试/检验

而不是:

本地主机/的 web1的 / 997d0d58-5f09-4431-9b2e-88a247bd334b /测试/检验

在挖掘之后,我发现我可以将 RouteCollection 类传递给 VirtualPathProvider 的实例。这就是我走到了尽头的地方。

我要去兔子洞吗?这听起来像是我试图过分动手来实现听起来像是一项简单的任务。

非常感谢。

0 个答案:

没有答案