【问题标题】:Cannot run cshtml configured within an Area无法运行区域内配置的 cshtml
【发布时间】:2011-09-30 18:30:31
【问题描述】:

我在名为 Account 的 MVC 项目中定义了一个区域,在该区域的视图下我有 Logon.cshtml。在 web.config 中,我得到了关注

 <authentication mode="Forms">
    <forms loginUrl="~/Areas/Account/LogOn" timeout="600" />
  </authentication>

我在我的控制器上使用 Authorize 属性,但是当我运行项目时,出现以下错误

“/”应用程序中的服务器错误。
找不到资源。
说明:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/Areas/Account/LogOn

任何想法我做错了什么?

【问题讨论】:

  • 你所在区域的名字叫“Areas”?
  • 当您在 MVS 中添加区域时,默认情况下会添加一个名为“Areas”的文件夹,并且您添加的所有区域都在此“Areas”文件夹下。我创建的区域名为“帐户”。所以物理上所有文件都在 "Areas\Account" 下。
  • 该区域名为“帐户”?这很奇怪,因为通常已经有一个名为AccountController控制器。而LogOn 听起来像是一个action,而不是一个controller

标签: asp.net-mvc-3


【解决方案1】:

虽然文件存储在名为Area 的文件夹中,但这并不意味着该文件的路由是/areas/account/logon

查看帐户文件夹中的AccountAreaRegistration.cs。此文件中定义的AreaName(很可能是Account)是通往该区域的路线的初始部分。此外,context.MapRoute 线路将包含您所在地区的默认路线。

很有可能,特别是如果您没有编辑区域注册文件,则放入 web.config 的正确路径是~/account/logon

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多