Intranet站点在使用匿名访问时要求凭据

时间:2015-01-10 18:01:43

标签: iis-7.5 asp.net-web-api

我正在开发一个通过ASP.NET WebAPI托管RESTful服务的Intranet站点。

我遇到的问题是所有浏览器(Chrome,Firefox和IE)都在显示请求凭据的登录提示。我在Windows 7 Home Premium中启用了匿名访问的IIS 7.5中托管该站点。

根URL http://localhost/RootAPI/应该对匿名用户可见,但是私有路由,例如只应通过http://localhost/RootAPI/Invoice属性向经过身份验证的用户访问http://localhost/RootAPI/Order[Authorize]。一旦我解决了这个问题,我打算通过AngularJS使用WebAPI调用来控制身份验证过程。

我的网站使用ASP.NET v4.0应用程序池标识,并且已为该用户的应用程序文件夹分配了读取权限。

我还在IE中的可信站点列表中添加了http://localhost,并检查了“允许集成Windows身份验证”。在IE的高级选项中。此外,使用当前用户名和密码自动登录'在Intranet站点的自定义级别中进行检查,问题仍然存在。

我的web.config文件中有这个。

<authentication mode="None" />
<identity impersonate="true" />

查看C:\inetpub\logs\LogFiles\W3SVC1下的日志文件时,它不显示用户名(我希望看到匿名用户名)并显示HTTP状态401。

我在这个令人沮丧的问题上花了两天时间,我无法阻止登录提示出现。任何人都可以指出我正确的方向,我做错了吗?

1 个答案:

答案 0 :(得分:0)

我发现自定义授权过滤器正在执行并检查控制器是否用[AllowAnonymousAttribute()]装饰后,我设法解决了这个问题,而且它不是。

将此属性添加到根控制器后,我不再收到登录提示。

这是添加属性过滤器后根控制器的样子:

[AllowAnonymousAttribute()]
public class RootController : ApiController
{
    ...
}

根页现在按预期显示。