是否有一种方法可以使IIS默认文档(默认值为ASP)优先于.NET路由



我试图将站点从经典的ASP迁移到.NET(使用WebMatrix)。我计划将新的.cshmtl页面与旧版.asp文件混合在一起,并随着时间的流逝而慢慢迁移站点。迄今为止,我有每个内容(每个URL)的个人.asp页面。当我移至.NET时,内容将来自数据库,因此每个URL都不会有特定的页面。我喜欢.NET中可用的路由功能,并且效果很好,并且与经典ASP效果很好,到目前为止有一个例外。

我的示例是我在/crafts/default.asp上有一个ASP页面,目前将其称为Just/Crafts/。IIS默认文档设置时,当我只引用/crafts/时,请注意为default.asp页面提供服务。我想开始将新项目发布到网站的此区域中,但以.NET页面运行。因此,我创建了a/crafts.cshtml页面,该页面旨在处理不同的URL,然后转到数据库并查找项目并显示信息。因此,作为一个例子,我在/crafts/fall-crafts.asp上有旧版页面,这很好 - 因为有一个.asp页面坐在那里。但是,当我引用/crafts/.net接管并提供/crafts.cshtml页面而不是服务/crafts/default.asp文件。我可以做些什么来保持.NET路由的功能,但是在这种情况下,IIS仍然有默认文档?

修改您的RouteConfig

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("crafts/");
        ...

请参阅rutecollection.ignore有关文档。

类似的问题(提到其他可能需要的解决方法):忽略ASP .NET MVC

中的文件夹

内置的网页框架中内置的默认路由"依赖于磁盘上的物理文件,首先是存在CSHTML或VBHTML文件。您一直都有一个craft.cshtml文件,其级别与称为Crafts的文件夹相同的级别,将首先提供该文件。解决方案是删除或重命名您的制作。CSHTML文件,但目前会弄乱您的URL。

有一个软件包,可以在网页应用程序中提供更大的管理。它称为网页的路由。它允许您将URL路由到所需的任何文件名。您可以通过软件包管理器或nuget下载并阅读我组合的本文,这些文章说明了如何使用它:http://www.mikesdotnetting.com/article/187/more-flexible-routing-for-asp.net-Web-pages。

最新更新