1

我正在尝试将站点从经典 ASP 迁移到 .Net(使用 WebMatrix)。我计划将新的 .cshmtl 页面与旧的 .asp 文件混合,并随着时间的推移慢慢迁移站点。迄今为止,我对每条内容(每个 url)都有单独的 .asp 页面。当我转向 .Net 时,内容将来自数据库,因此每个 url 不会有特定的页面。我喜欢 .Net 中可用的路由的强大功能,它运行良好,并且与经典 ASP 配合得很好,到目前为止有一个例外。

我的示例是我有一个位于 /crafts/default.asp 的 ASP 页面,并且目前在任何地方都将其引用为 /crafts/。当我只引用 /crafts/ 时,IIS 默认文档设置负责为 default.asp 页面提供服务。我想开始将新项目发布到网站的这个区域,但作为 .Net 页面运行。所以我创建了一个 /crafts.c​​shtml 页面,该页面旨在处理不同的 url 并转到数据库并查找项目并显示信息。举个例子,我在 /crafts/fall-crafts.asp 有一个旧页面,这很好用 - 因为有一个 .asp 页面坐在那里命名。但是当我引用 /crafts/ 时,.Net 接管并提供 /crafts.c​​shtml 页面,而不是提供 /crafts/default.asp 文件。我可以做些什么来保持 .Net 路由的强大功能,

4

2 回答 2

1

修改您的 RouteConfig

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

有关文档,请参阅RouteCollection.Ignore

类似的问题(提到了一些其他可能需要的解决方法):Ignore folder in ASP .NET MVC

于 2012-11-07T16:34:34.757 回答
0

Web Pages 框架中内置的默认“路由”依赖于将传入的 URL 与磁盘上的物理文件相匹配,首先查找 cshtml 或 vbhtml 文件的存在。只要您有一个与名为 crafts 的文件夹处于同一级别的 crafts.c​​shtml 文件,就会首先提供该文件。解决方案是删除或重命名您的 crafts.c​​shtml 文件,但目前这会弄乱您的 URL。

有一个包可以更好地管理网页应用程序中的路由。它被称为网页路由。它允许您将 URL 路由到您喜欢的任何文件名。您可以通过包管理器或 Nuget 下载它并阅读我整理的这篇文章,解释如何使用它: http: //www.mikesdotnetting.com/Article/187/More-Flexible-Routing-For-ASP.NET -网页

于 2012-11-08T08:18:52.740 回答