Intranet 站点在使用匿名访问时要求凭据
Intranet site asking for credentials when using anonymous access
我正在开发一个内联网网站,通过 ASP.NET WebAPI 托管 RESTful 服务。
我遇到一个问题,所有浏览器(Chrome、Firefox 和 IE)都显示登录提示,要求凭据。我在启用匿名访问的 Windows 7 Home Premium 上的 IIS 7.5 中托管网站。
root URL http://localhost/RootAPI/
应该对匿名用户可见,但是私有路由,例如http://localhost/RootAPI/Invoice
和 http://localhost/RootAPI/Order
应仅供通过 [Authorize]
属性的经过身份验证的用户访问。一旦我解决了这个问题,我打算通过 AngularJS 使用 WebAPI 调用来控制身份验证过程。
我的网站使用 ASP.NET v4.0 应用程序池标识,我已为此用户分配了对应用程序文件夹的读取权限。
我还将 http://localhost
添加到 IE 的受信任站点列表中,并检查了 IE 的高级选项中的 'Allow Integrated Windows Authentication'。此外,在 Intranet 站点的自定义级别中检查了 'Automatic login with current user name and password',问题仍然存在。
我的 web.config 文件里有这个。
<authentication mode="None" />
<identity impersonate="true" />
查看 C:\inetpub\logs\LogFiles\W3SVC1
下的日志文件时,它不显示用户名(我希望看到匿名用户名)并显示 HTTP 状态 401。
我在这个令人沮丧的问题上花了两天时间,我无法阻止登录提示的出现。谁能指出我做错了什么的正确方向?
在发现正在执行自定义授权过滤器并检查控制器是否装饰有 [AllowAnonymousAttribute()]
并且没有装饰后,我设法解决了这个问题。
将此属性添加到根控制器后,我不再收到登录提示。
这是添加属性过滤器后根控制器的样子:
[AllowAnonymousAttribute()]
public class RootController : ApiController
{
...
}
根页面现在按预期显示。
我正在开发一个内联网网站,通过 ASP.NET WebAPI 托管 RESTful 服务。
我遇到一个问题,所有浏览器(Chrome、Firefox 和 IE)都显示登录提示,要求凭据。我在启用匿名访问的 Windows 7 Home Premium 上的 IIS 7.5 中托管网站。
root URL http://localhost/RootAPI/
应该对匿名用户可见,但是私有路由,例如http://localhost/RootAPI/Invoice
和 http://localhost/RootAPI/Order
应仅供通过 [Authorize]
属性的经过身份验证的用户访问。一旦我解决了这个问题,我打算通过 AngularJS 使用 WebAPI 调用来控制身份验证过程。
我的网站使用 ASP.NET v4.0 应用程序池标识,我已为此用户分配了对应用程序文件夹的读取权限。
我还将 http://localhost
添加到 IE 的受信任站点列表中,并检查了 IE 的高级选项中的 'Allow Integrated Windows Authentication'。此外,在 Intranet 站点的自定义级别中检查了 'Automatic login with current user name and password',问题仍然存在。
我的 web.config 文件里有这个。
<authentication mode="None" />
<identity impersonate="true" />
查看 C:\inetpub\logs\LogFiles\W3SVC1
下的日志文件时,它不显示用户名(我希望看到匿名用户名)并显示 HTTP 状态 401。
我在这个令人沮丧的问题上花了两天时间,我无法阻止登录提示的出现。谁能指出我做错了什么的正确方向?
在发现正在执行自定义授权过滤器并检查控制器是否装饰有 [AllowAnonymousAttribute()]
并且没有装饰后,我设法解决了这个问题。
将此属性添加到根控制器后,我不再收到登录提示。
这是添加属性过滤器后根控制器的样子:
[AllowAnonymousAttribute()]
public class RootController : ApiController
{
...
}
根页面现在按预期显示。