如何在Web.config中为.NET Web API启用带默认域的Basic和匿名身份验证
正确配置方案
核心错误排查
你当前的配置存在两个明显问题:
- 拼写错误:
basicAuthenticaion、anonymousAuthenticaion拼写错误,正确拼写为basicAuthentication、anonymousAuthentication - 节点结构错误:身份验证配置需要放在
<authentication>父节点下,不能直接嵌套在<security>节点内
前置依赖检查
首先确保运行环境已安装对应IIS功能:
- Windows服务器:打开服务器管理器 > 角色和功能安装向导 > Web服务器(IIS) > 安全性 > 勾选「基本身份验证」、「匿名身份验证」完成安装
- 本地Windows系统:打开控制面板 > 程序和功能 > 启用或关闭Windows功能 > Internet Information Services > 万维网服务 > 安全性 > 勾选「基本身份验证」、「匿名身份验证」完成安装
修正后Web.config配置
<configuration> <!-- 原有配置保留,新增/修改以下节点 --> <system.web> <authentication mode="None" /> <authorization> <allow users="?" /> </authorization> </system.web> <system.webServer> <security> <authentication> <basicAuthentication enabled="true" defaultLogonDomain="替换为你的实际域名" /> <anonymousAuthentication enabled="true" /> </authentication> </security> <modules runAllManagedModulesForAllRequests="true"> <remove name="FormsAuthentication" /> </modules> </system.webServer> </configuration>
生效验证注意事项
- 若需要部分接口走Basic认证、部分允许匿名访问,只需在需要认证的控制器/Action上添加
[Authorize]特性即可,未添加特性的接口默认走匿名逻辑 - 本地IIS Express调试时,需右键项目 > 属性 > Web > 服务器设置中,手动勾选「匿名身份验证」和「基本身份验证」
- 部署到IIS后若仍不生效,可打开IIS管理器 > 对应站点 > 身份验证功能页,查看两个认证项是否显示已启用,如显示锁定状态,需修改IIS全局applicationHost.config配置解除对应项的锁定限制
内容的提问来源于stack exchange,提问作者Gopinath2105
相关产品推荐
相关产品推荐

