【问题标题】:ASP.NET MVC2: Can't find controllerASP.NET MVC2:找不到控制器
【发布时间】:2023-04-08 22:17:02
【问题描述】:

我有一个使用区域的 MVC 2.0 网站。当我转到默认页面(localhost/mywebsite/default.aspx)时,它会正确路由到正确控制器中的正确操作并正确呈现默认视图。

但是页面上我有几个Html.ActionLinks,这些好像都找不到Controller。当我点击页面中的链接时,出现 404 错误。

网址是我所期望的:localhost/mywebsite/MyAreaName/Home/Index(例如)。我也试过 localhost/mywebsite/Areas/MyAreaName/Home/Index,但这也给了我 404。

如何让 Controller 被识别?

【问题讨论】:

  • 您能发布与您的 ActionLinks 相关的代码吗?

标签: asp.net-mvc iis-7 asp.net-mvc-2 routing


【解决方案1】:

您可能没有正确设置 IIS 设置以正确映射请求。

IIS 是否验证您已将“通配符应用程序映射”设置为:

c:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

并确保您有“验证文件存在”复选框未选中

Walkthrough - 阅读“IIS6 无扩展 URL”部分


(来源:haacked.com

More information with IIS 6 MVC setup

More IIS Info

编辑:由于您使用的是 IIS 7,请验证它是否在集成模式下运行。如果它以经典模式运行,则映射不会像 IIS6 那样自动完成。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

【讨论】:

  • 您好 Kelsey,我使用的是 IIS 7,因此不需要通配符映射。我还有其他运行良好的独立 MVC 项目。
  • @Lane 我没有意识到你在使用 IIS7,我已经编辑了一些其他的东西来检查。
【解决方案2】:

你正在使用区域,你注册区域路线了吗?

ASP.NET MVC 2 Beta single-project Area registration getting HTTP 404

【讨论】:

  • 谢谢梅夫。我已经注册了区域路线,并且尝试了各种替代方法,但都没有奏效。
  • @Lane,你试过 Haacked 的路由调试器吗?可能值得一看,也许有你忽略的东西:haacked.com/archive/2008/03/13/url-routing-debugger.aspx
  • 不幸的是,我无法在我的 MVC 2.0 应用程序中使用它。我也尝试实现我自己的 ControllerFactory。但这也没有用。
  • 实际上,我确实使用 MvcContrib 让它工作了。但是我希望工作的 URL 继续生成 404,所以它没有显示任何内容。
  • @Lane,我认为我们需要查看控制器定义和 actionlink 定义。它可能缺少参数或意味着它无法匹配方法定义的东西?
【解决方案3】:

@Kelsey,我确实使用集成管道模式正确设置了应用程序池。但是感谢您引导我走上正确的道路。我在区域的 web.config 中有所需的配置设置,而不是在网站的根目录中,因此从未应用路由。我将配置设置移动到根级别 web.config 并且一切正常。

感谢您的帮助,Meff,也感谢您提出的所有想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多