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

为何API本地运行正常,部署后却抛出Error 500?

排查生产环境API 500错误的步骤

1. 先获取生产环境的详细错误信息

生产环境默认不会返回详细错误详情,必须先拿到具体异常才能定位问题:

  • ASP.NET Core环境临时调试:修改Program.cs,临时在生产环境启用开发者异常页面(调试完成后务必关闭,避免泄露敏感信息):
    if (app.Environment.IsProduction())
    {
        app.UseDeveloperExceptionPage(); // 仅用于临时排查
    }
    
  • 查看服务器日志:Windows环境用事件查看器(路径:Windows日志→应用程序);Linux环境查看/var/log下的相关日志文件,或ASP.NET Core默认生成的Logs目录日志。
  • 修复前端fetch的错误捕获逻辑:原生fetch仅在网络错误时进入catch,HTTP 500属于成功响应不会触发reject,需手动判断响应状态并捕获服务器返回的错误内容:
    const uri = '/api/depoimentos';
    function getItems() {
        fetch(uri)
            .then(response => {
                if (!response.ok) {
                    return response.text().then(errText => {
                        throw new Error(`Status ${response.status}: ${errText}`);
                    });
                }
                return response.json();
            })
            .then(data => _displayItems(data))
            .catch(error => console.error('Unable to get items.', error));
    }
    

2. 检查数据库相关配置

  • 核对生产环境数据库连接字符串:确认和本地测试用的线上数据库连接字符串完全一致,无用户名、密码、服务器地址拼写错误。
  • 验证数据库防火墙权限:确认数据库服务器已开放生产环境服务器IP的访问端口。
  • 检查数据库账号权限:生产环境使用的数据库账号是否拥有Depoimentos表和Arquivo表的读取权限。

3. 检查生产环境运行环境

  • 确认**.NET版本一致性**:生产环境的.NET版本需和本地开发环境完全匹配,版本不兼容可能导致Include、AsNoTracking等LINQ查询语法抛出异常。
  • 检查文件读写权限:如果Arquivo实体涉及本地文件存储,需确认生产环境应用进程(如IIS应用程序池)拥有对应文件目录的读写权限。

4. 后端代码潜在问题排查

  • 移除无效的if (_context.Depoimentos == null)判断:DbContext的DbSet初始化后不会为null,该判断无法覆盖真实异常,反而可能掩盖上下文初始化失败的问题。
  • 测试ItemToDTO转换逻辑:模拟线上数据库的真实数据,排查转换过程中是否存在空引用、类型不匹配等异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:25:29