我有以下Web应用程序架构,使用ASP.Net MVC 5.2.2,每个网站都有虚拟目录。
我希望使用来自所有三个(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 的实例。这就是我走到了尽头的地方。
我要去兔子洞吗?这听起来像是我试图过分动手来实现听起来像是一项简单的任务。
非常感谢。