【问题标题】:System.Web.HttpException when using [Authorize]使用 [Authorize] 时的 System.Web.HttpException
【发布时间】:2019-02-07 09:16:25
【问题描述】:

我正面临一个我无法解决的非常奇怪的问题。 我有这个按钮 onclick 我转到需要使用 [Authorize] 的控制器操作方法,当我使用 [Authorize] 时出现以下错误。

以下部分已定义但尚未为布局页面“~/Views/Shared/_Layout.cshtml”呈现:“脚本”。

System.Web.HttpException

但是,当我不使用 [Authorize] 时,它可以正常工作。为什么它会这样?任何帮助将不胜感激。

[Authorize]
public async Task<ActionResult> Calendar(int id, string start, string end)
{
    //code
}

【问题讨论】:

  • 相关问题:stackoverflow.com/questions/10971149/…。可能布局没有非必需部分。
  • @TetsuyaYamamoto 只有当我将 [Authorize] 标签放在我的 ActionMethod 上时才会出现异常,否则它可以正常工作。我尝试将 non-req 部分设为 false,但它也对我不起作用。

标签: c# asp.net-mvc razor model-view-controller asp.net-authorization


【解决方案1】:

在您的 ~/Views/Shared/_Layout.cshtml 页面上,您可能有一个必须包含在每个视图中的部分,它将是这样的:

@RenderSection("scripts")

你需要把它改成这样:

@RenderSection("scripts", required: false)

这意味着该部分在使用您的布局页面的页面上是可选的。

旧但仍然相关:

https://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts-and-sections-with-razor

【讨论】:

  • 我的 _Layout.cshtml 没有 @RenderSection("scripts")。我尝试添加 @RenderSection("scripts", required: false) 但异常仍然存在。问题是当我删除 [authorize] 标签时它工作正常。
  • 当您添加授权属性时,如果您当前未经过身份验证,它会将您重定向到您的登录视图,这将是未实现所需部分的位置,而如果您删除该属性,它将只是显示日历视图。我建议您发布 _layout.cshtml 和登录视图 HTML。
  • 哦,我明白了。实际上,我在具有 Outlook auth api 的操作方法上使用此 [Authorize]。我使用它来获取用于 Outlook 登录的身份验证令牌,然后将我的事件添加到 Outlook 日历。
  • 你知道实际上是什么视图抛出了错误吗?我非常有信心问题会出现在我上面的回答中,您只需要使用您的身份验证机制来解决用户最终的问题以及导致问题的视图。您知道您的身份验证机制正在工作吗?
  • 是的,你是对的,我的身份验证机制有问题。修复。现在工作正常。多谢。非常感谢!
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多