You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署.NET Framework 4.8的ASP.NET MVC至IIS遇多类错误求助

解决ASP.NET MVC 4.8部署IIS的403.14与500.21错误及EF数据库配置

一、修复HTTP Error 403.14 - Forbidden

  • 确认IIS站点的默认文档包含Default.aspx或Index.cshtml(MVC默认路由的首页)。操作路径:IIS管理器 → 站点 → 功能视图 → 默认文档 → 添加对应文件名。
  • 确保ASP.NET MVC路由规则生效:检查站点根目录下的web.config是否包含正确的路由配置,确认System.Web.Routing模块已启用:
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true">
        <remove name="UrlRoutingModule-4.0" />
        <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
      </modules>
    </system.webServer>
    
  • 禁用目录浏览:启用目录浏览只是临时方案,解决路由问题后必须关闭,避免安全风险。

二、修复HTTP Error 500.21 - Handler "BlockViewHandler"错误

这个错误是ASP.NET集成管道配置异常或.NET Framework未正确注册到IIS导致的,按以下步骤处理:

  • 重新注册.NET Framework 4.8到IIS:以管理员身份打开命令提示符,执行:
    %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
    
    64位系统额外执行:
    %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
    
  • 检查应用程序池配置:确保站点对应的应用程序池,.NET CLR版本设置为.NET Framework v4.0.30319,托管管道模式设为集成(不要选经典)。
  • 验证Views文件夹的web.config:确保阻止直接访问视图的配置未被篡改,正确配置如下:
    <system.webServer>
      <handlers>
        <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
      </handlers>
    </system.webServer>
    

三、带Entity Framework的MVC应用部署配置

添加EF后出现故障,重点检查以下几项:

  • 数据库连接字符串:把web.config里的连接字符串改成生产环境的,别用本地开发的SQL实例。示例:
    <connectionStrings>
      <add name="YourDbContext" connectionString="Data Source=PROD-SQL;Initial Catalog=YourDatabase;User ID=DbUser;Password=YourPassword;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    
  • 数据库权限:确保应用程序池身份(或配置的数据库用户)有目标数据库的读写权限。如果用应用程序池身份,要在SQL Server里给IIS APPPOOL\你的应用程序池名称创建登录名,再分配对应数据库的权限。
  • 执行EF迁移脚本:如果用Code First迁移,部署前先在开发环境生成迁移脚本,再到生产数据库执行,保证数据库结构和代码一致。生成脚本的命令:
    Update-Database -Script -SourceMigration:0
    
    把生成的SQL脚本拿到生产SQL Server里运行即可。
  • 验证EF配置:确认web.config里的EF配置正确,示例:
    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    

四、最终验证

  1. 重启IIS站点和对应的应用程序池。
  2. 访问站点首页,确认路由能正常加载控制器的Action。
  3. 测试数据库相关功能(比如查询、提交数据),确保连接和权限都没问题。

内容的提问来源于stack exchange,提问作者Nora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:30:53