【发布时间】:2019-12-08 10:01:26
【问题描述】:
我试图在 IIS 中的 drupal 网站的子文件夹下托管我的 c# asp.net MVC 应用程序。
我真正想要实现的是以下示例 当我访问这个路径 www.example.com 时,drupal 网站应该打开,当我访问 www.example.com/subfolder 时,MVC 应用程序应该打开
所以我在drupal网站内创建了一个应用程序,如下图所示
结果是当我访问 www.example.com/subfolder 时,会调用默认控制器和默认操作,并显示 MVC 应用程序的默认视图。 话虽如此,它不适用于其他视图。 每当我尝试访问 www.example.com/subfolder/Home/SecondAction 时,它只会显示 404 错误。 即使我尝试通过 www.example.com/subfolder/Home/Index 访问默认视图也不起作用并显示 404
我已经尝试了控制器的路由前缀和路由属性,并且我已经尝试了这些路由绑定,它们都不起作用
//routes.MapRoute(
// name: "EDF",
// url: "{controller}/{action}/{id}/{edf*}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
//routes.MapRoute(
// "SubFolder", // Route name
// "EDF/{controller}/{action}",
// new { controller = "Home", action = "Index" },
// new[] { "EDF.EDF.Controllers" }
//);
// routes.MapRoute(
// name: "EDF",
// url: "EDF/{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
// routes.MapRoute(
// name: "EDF",
// url: "{EDF}/{controller}/{action}/{id}",
// defaults: new { EDF = UrlParameter.Optional, controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
我知道其中一些甚至没有意义,但我很绝望 这一点,什么都试过了。
非常感谢任何想法、建议和解决方案
【问题讨论】:
-
最简单的方法是为该 ASP.NET MVC 应用程序设置一个单独的站点,然后使用带有一些规则的 ARR 来桥接 URL,docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/…
-
我怀疑配置的继承,我不知道使用 drupal 你将如何处理它到你的子应用程序。但在 .net 中,我们只需清除我们不想继承的配置设置。
-
@LexLi 非常感谢。目前我无法修改结构以使 ARR 成为主要网站“example.com”或在其上安装新东西,但您的建议将在未来的项目中帮助我。
-
@jomsk1e 谢谢。正确,但请您向我提供您在这种情况下所做的事情的链接或来源。我会尝试一下,以防它也适用于 drupal。
-
您是否在 web.config 文件中启用了 url 重写?如果您启用了 url 重写规则,请发布 url 重写规则。我猜这可能会导致您的 MVC 应用程序无法运行。
标签: asp.net asp.net-mvc iis subdirectory host