【问题标题】:mixed MVC routing for MVC app under web forms appWeb 表单应用下 MVC 应用的混合 MVC 路由
【发布时间】:2009-11-23 03:17:33
【问题描述】:

我在托管服务器的根目录中安装了一个 BlogEngine.net 实例。我想用 ASP.Net MVC 编写一个小应用程序并将该应用程序安装在根目录下的文件夹下。

我可以看到http://example.com/testApp/,但像http://example.com/testApp/edit 这样的路由页面却是404。

我已经四处搜索,只是不清楚需要什么才能正确路由。我需要在 BlogEngine 的 web.config 中设置一些东西还是需要在我的应用程序设置中做一些事情?

主机是 WinHost.com,它是 IIS7

编辑/更新

所以我知道http://example.com/testApp 得到服务是因为该目录下有一个default.aspx,并且路由页面没有得到服务,因为它们没有物理aspx。当我在 Visual Studio 下启动 /edit 时,它会被路由到编辑视图。

我猜测 BlogEngine.net 的 global.asax 正在尝试将这些页面映射到 BlogEngine 世界,而不是将它们路由到我的 testApp。

如果是这种情况,那么我的问题是如何让 BlogEngine 将请求转发到我的 testApp?我希望我在 web.config 中遗漏了一些简单的东西,因为如果我必须向 BlogEngine 的 global.asax 添加东西来进行路由,那么我不需要重建 BlogEngine 吗?

【问题讨论】:

  • 你真的应该在 global.asax 中发布映射代码。

标签: asp.net-mvc iis-7


【解决方案1】:

根据我在MVC tutorial 中找到的信息,我发现了我的路由无法正常工作的原因。

我在托管服务器上的请求处理模式配置为使用 Classic .NET AppPool not Integrated 模式。要让它在经典模式下工作,您需要修改路由表以使用文件扩展名或创建通配符脚本映射。

我能够让 BlogEngine 使用集成模式继续工作,所以我需要解决这个问题的只是更改模式。

希望这对某人有所帮助...

【讨论】:

    【解决方案2】:

    您的应用程序中是否存在用于 testApp 控制器的 Edit.aspx 文件?默认路由的工作方式是:

    routes.MapRoute(
    "Default",                   // Route name
    "{controller}/{action}/{id}",    // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
     );
    

    所以默认情况下,当您访问 Home/Index 时,ASP.NET MVC 会查找 Index.aspx

    在您的情况下,您的路由包括(我只是编造的):

    routes.MapRoute(
    "CustomRoute",                   // Route name
    "{controller}/{action}/{id}",    // URL with parameters, id is optional.
    new { controller = "testApp", action = "Edit", id = "" }  // Parameter defaults
     );
    

    您尝试在哪里使用 Edit.aspx

    您的 Global.asax 文件内部是您所有自定义路由所在的位置,您是否完全接触过该文件?我听说的经验法则是,您希望在默认之前先编写所有自定义路由。

    编辑:

    我也偶然发现了这个,可能会有所帮助

    配置文件中有四个部分与路由相关:system.web.httpModules 部分、system.web.httpHandlers 部分、system.webserver.modules 部分和system.webserver.handlers 部分。注意不要删除这些部分,因为没有这些部分,路由将不再起作用。

    取自here

    祝你好运,希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 2012-10-25
      • 1970-01-01
      • 2018-08-17
      • 2012-02-09
      • 2016-04-26
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多