首页 > 解决方案 > 带有 aspx 扩展名的路由 url 到 mvc 路由

问题描述

我有一个网站将数据发布到旧的网络应用程序 url mywebsite.com/Confirm.aspx

我正在使用 asp.net mvc 编写一个新应用程序,我希望将相同的 url 帖子应用于我的控制器“处理器”上名为“确认”的操作。是否可以在 asp.net mvc 中使用路由来做到这一点?如果是这样怎么办?

标签: asp.netasp.net-mvcrouting

解决方案


有一种解决方法。

您可以在 web.config 中添加以下请求处理程序。

<system.webServer>
  <handlers>
    <add name="HtmlFileHandler" path="*.html" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

    <add name="AspxlFileHandler" path="*.aspx" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

然后您可以创建路由定义:

routes.MapRoute(
    name: "LegacyHtml",
    url: "{page}.html",
    defaults: new { controller = "Home", action = "LegacyPage", page = UrlParameter.Optional }
);

routes.MapRoute(
    name: "LegacyAspx",
    url: "{page}.aspx",
    defaults: new { controller = "Home", action = "LegacyPage", page = UrlParameter.Optional }
);

接下来,您可以在路由中提到的控制器操作中处理请求。

或者您可以根据页面路径变量的值进一步将操作重定向到其他页面/站点。

这在这个博客中得到了很好的解释。


推荐阅读