部署ASP.NET MVC至IIS 10出现403 Forbidden错误,求排查方案
排查ASP.NET MVC部署IIS出现403.14错误的方法
1. 确认ASP.NET 4.8已正确注册到IIS
- 以管理员身份打开命令提示符,执行对应命令:
若部署的是32位应用,替换路径为%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i。执行完成后重启IIS(运行iisreset命令)。
2. 检查站点与应用程序池的.NET版本设置
- 打开IIS管理器,进入目标站点的【基本设置】,确认.NET CLR版本选择
v4.0.30319(对应.NET 4.8),而非“无托管代码”。 - 找到对应应用程序池,查看其设置:.NET CLR版本设为v4.0,托管管道模式选择集成(MVC依赖集成模式处理路由规则)。
3. 验证web.config中的路由配置
- 确保发布后的web.config包含MVC路由所需的节点,正常配置示例如下:
若缺失相关节点,手动添加后重启站点。<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="UrlRoutingModule-4.0" /> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> </modules> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer>
4. 检查IIS模块映射
- 在IIS管理器的站点【模块】选项中,确认
UrlRoutingModule-4.0已存在;若不存在,点击【添加托管模块】,名称填写UrlRoutingModule-4.0,类型选择System.Web.Routing.UrlRoutingModule,勾选【仅针对请求向ASP.NET应用程序或托管处理程序发出调用】。
5. 临时验证默认文档设置
- 将
Index(不带后缀)添加到默认文档列表的最顶端,测试是否能直接访问首页。若能访问,说明路由规则未生效,需回到前面步骤检查注册与模块配置;若仍无法访问,继续排查权限问题。
6. 确认应用程序池身份的文件夹权限
- 右键站点物理路径文件夹→【属性】→【安全】,添加
IIS AppPool\[你的应用程序池名称]账户,赋予其读取和执行、列出文件夹内容、读取权限。
内容的提问来源于stack exchange,提问作者rwkiii
相关产品推荐
相关产品推荐

