此请求已拒绝授权 - 新Web API项目

时间:2016-08-15 21:36:05

标签: c# asp.net-mvc asp.net-web-api

我刚刚在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的新手。 请注意,我不想删除“授权”属性。我想仅在授权后访问该资源。所以我在寻找什么是错的。

3 个答案:

答案 0 :(得分:16)

这是因为您的ValuesController

上有Authorize个属性
[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);