【发布时间】:2015-05-31 20:33:24
【问题描述】:
我有一个奇怪的问题,当然只发生在我们的生产盒上。它适用于我们的测试服务器和我的盒子。
我有一个用于公开 RESTful API 的 ASP.NET MVC 3 控制器。我已启用匿名用户使用下面显示的代码调用这些服务。通过 GET 调用这些方法就可以了(使用 WebRequest)。但是,当尝试 POST 数据(使用 HttpClient)时,它会失败并出现 401 错误。
此 Web 服务托管在另一个使用 Windows 身份验证的 IIS 站点中。但我将此目录配置为允许匿名和禁用 Windows 身份验证。它位于主站点下的 /Areas/Services 中。
我已将 IIS 配置为允许匿名身份验证,甚至在 web.config 中启用了它。但是,当我尝试将数据发布到此控制器时,我返回“401 - 未经授权:由于凭据无效而拒绝访问”。我不要任何凭据!同样,在同一控制器上的 GET 匿名也能正常工作。
这似乎是一个配置问题(因为它在 QA 中有效),但我不知道要配置任何其他内容。我已经为匿名/windows/forms auth 配置 IIS 网站 10 年了,但之前从未遇到过这样的事情。
这是允许 MVC 3 为任何人提供这些方法的代码:
[AuthorizeAnonymous]
public class LtWebsiteController : Controller
{
...
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class AuthorizeAnonymousAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!(filterContext.Controller is LtWebsiteController))
base.OnAuthorization(filterContext);
}
}
这快把我逼疯了!请帮忙。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3 anonymous