【问题标题】:ASP MVC Routes being ignored in hybrid classic asp site混合经典 asp 站点中忽略 ASP MVC 路由
【发布时间】:2012-02-20 09:51:18
【问题描述】:

我有一个现有的经典 asp /asp mvc 混合应用程序。其中慢慢变得不那么经典的 asp 和更多的 asp mvc。总的来说,这很好用。然而,一个关键点是,当存在与路由 url 匹配的现有文件夹时,mvc 路由会失败。

例如,路径 [siteroot]\account\personaldetails\billing.asp 上有一个现有页面,这通常在 url http://host.com/account/personaldetails/billing 上提供服务。我已经删除了 asp 文件并构建了一个 asp mvc 视图来替换它。

如果帐户文件夹从应用程序中完全删除,我的路由工作正常,但如果帐户文件夹在那里,当我尝试访问新视图时,我会收到 404。我该如何解决这个问题?

【问题讨论】:

  • 我相信您配置(启用)路由的方式一定会影响这一点。为了使路由工作,路径必须由 ASP.NET 管道处理 - 我怀疑当帐户文件夹存在时不会发生这种情况。也许,您需要添加特殊条目,以便帐户文件夹下的无扩展路径由 ASP.NET 显式处理,而具有 .asp 的路径由经典 ASP 扩展处理。这可能会对您有所帮助(对于 IIS 6):haacked.com/archive/2010/12/22/…。您还应该发布 IIS 版本以及您如何进行路由等以获得更好的答案!

标签: asp.net-mvc-3 asp-classic routing


【解决方案1】:

事实证明,我制定的重写规则是激进的。我只需要添加一个条件来防止时事通讯被提取为 .asp 文件。

<rule name="account remove extension">
    <match url="^account(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_FILENAME}" pattern="newsletter(.*)$" negate="true" />
     </conditions>
     <action type="Rewrite" url="account/{R:1}.asp" />
</rule>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 2012-01-22
    • 1970-01-01
    • 2011-03-23
    • 2013-05-17
    • 2012-04-30
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多