【发布时间】:2020-10-19 22:36:25
【问题描述】:
我正在开发一个较旧的 ASP.NET 项目并在 IISExpress 中进行调试,并实现了一个不需要身份验证/匿名的 API 控制器方法(我相信该项目设置为 Windows 身份验证)。
在 APIController 中,我在方法上方添加了以下属性:
[System.Web.Mvc.AllowAnonymous]
在 web.config 文件中,我在正确的位置添加了以下内容:
<location path="api/GreenTime">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
但是,当访问 API 控制器/方法时,浏览器会提示输入凭据,如果提供了域凭据,则会返回 401.2 错误。
【问题讨论】:
-
你说它是一个API控制器?就像在 Web API 框架中一样?您是否注意到您使用的属性在 MVC 命名空间 (System.Web.Mvc) 中,而不是在 Web API 命名空间 (System.Web.Http) 中?你可能想要this attribute。
-
我也可以使用“System.Web.Http.AllowAnonymous”,不确定这是否正确。 Controller 继承自 ApiController。
-
我只是在方法上方更改为 System.Web.Http.AllowAnonymous 属性,但不幸的是结果相同。
-
移除 web.config 逻辑。你不需要它。
-
@mason 如果我像在我的 OP 中一样删除 web.config 块,则它不起作用。我设法弄清楚了,请参阅我的答案。谢谢!