我刚刚在visual studio 2015中创建了新的Web API项目(使用MVC)并且出于测试目的,我运行了该项目但最终出现了错误。
运行项目后,它会正确显示主页,但当我导航到/ api / values或/ api / values / 5时,它会给我下面的xml消息。
<Error>
<Message>Authorization has been denied for this request.</Message>
</Error>
有人可以帮忙吗?我是Web API的新手。 请注意,我不想删除“授权”属性。我想仅在授权后访问该资源。所以我在寻找什么是错的。
答案 0 :(得分:16)
这是因为您的ValuesController
[Authorize]
public class ValuesController : ApiController
只需删除[Authorize]
然后重试
修改强>
根据您的编辑:您应该创建一个新用户并登录或使用@Marcus H提到的[AllowAnonymous]
。阅读有关身份的更多信息
答案 1 :(得分:0)
删除后,您在诸如 [Authorize]
这样的控制器中使用方法上的授权属性,甚至是诸如 [BasicAuthentication]
这样的手动授权属性创建(希望能够处理),您必须将此属性 [AllowAnonymous]
放在方法名称上。
答案 2 :(得分:-1)
我在这里得到了答案。
https://stackoverflow.com/a/29405794/8107314
修复错误我的错误非常有用
我刚遇到同样的问题并找到了解决方案:
您需要在注册WebAPI之前注册OAuth令牌生成器和OAuth令牌使用者。
如果您认为这是一个管道,那么有意义的是,在控制器处理任何请求之前,应该进行身份验证/授权。
TL; DR:改变
appBuilder.UseWebApi(config);
this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);
要
this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);
appBuilder.UseWebApi(config);