【发布时间】:2010-10-12 18:59:02
【问题描述】:
我们网站的根目录中有一个经典的 VBScript“default.asp”页面。 (这是一个沉重的遗留页面,现在不能转换它。)我们还有一个新的 ASP.NET MVC 2 应用程序,我们希望在同一个站点上托管。一切实际上都很好!除了一件事:对站点根目录的请求(例如,/)被 MVC 路由(然后想要显示 HomeController 的索引操作)接收,而不是让 default.asp 页面接受请求!
这就是我想要的:
http://www.example.com/
我不知道如何不执行HomeController.Index()。如果我删除 HomeController,我会收到错误消息。如果我尝试 IgnoreRoute("") 我得到一个错误。我什至更改了 IIS 中“默认文档”的优先级/顺序,以便该站点将“default.asp”视为首选文档。我什至已经从根目录中删除了虚拟 MVC“default.aspx”页面,但 MVC 路由仍然在“窃取”对站点根目录的请求。
临时解决方案是让 HomeController.Index 将用户重定向回“default.asp”。这可行,但随后它在地址栏中显示得很丑且可见,
http://www.example.com/default.asp
关于如何让这两者共存的任何建议/答案?也许我可以在 web.config 中添加一些东西来为主页设置这个特定的例外?谢谢!
更新
我为延迟回到这个问题而道歉,但它被搁置了一段时间,老实说,我几乎忘记了这一点;但是我确实设法让这个工作!我要感谢 Chris Marisic 和 Chance,因为他们联合起来帮助我解决了这个问题。
问题确实如此,似乎有一条默认路由(正如 Chance 在评论中建议的那样)将这些请求捕获到站点根目录。
因此,通过对此进行调整,并将routes.IgnoreRoute("");(空字符串)添加为我的路由列表中的第一条规则,现在可以使用了!
感谢大家的帮助!
【问题讨论】:
-
我不确定这一点,但您是否尝试在您的路线配置中设置 RouteExistingFiles = true ?这是一个疯狂的猜测,可能是错误的,但值得一试。
标签: asp.net asp.net-mvc iis asp-classic routing