【发布时间】:2015-10-18 22:59:27
【问题描述】:
我有一个 ASP.NET 5 MVC 6 Web API 项目。大多数 API 端点都具有 [Authorize] 属性,并且在 IIS 和 Visual Studio 中的项目属性中都启用了 Windows 身份验证。这一切都在 beta 7 中运行良好。
但是,在 beta 8 中,这不起作用。使用完全干净的项目很容易重现这一点:
- 使用 ASP.NET 5 Web API 模板创建一个新项目。
- 获取项目的属性(不是解决方案),转到“调试”选项卡,启用 Windows 身份验证并禁用匿名。保存更改。
- 按 F5 并让它尝试运行项目。
结果:
尝试确定托管您的应用程序的 DNX 进程的进程 ID 时发生错误。
- 现在返回项目属性并启用匿名。也启用 Windows。保存更改。
- 转到您的控制器并添加 [Authorize] 属性。
- 再次按 F5。
结果:
本次项目启动,但 Web API 返回 500。请注意在输出窗口中:
Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker:警告:过滤器“Microsoft.AspNet.Mvc.Filters.AuthorizeFilter”处的请求授权失败。
该项目在发布到 IIS 时也不起作用。
如 beta 8 announcement 中所述,托管模型已更改,因此 IIS 现在将请求传递给 Kestrel。 Servers page 没有表明 Kestrel 支持 Windows 身份验证。让 Windows 身份验证在 beta 8 中工作有什么技巧吗?
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-mvc