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

ASP.NET Core接口Swagger调用报500:全球化不变模式文化异常

ASP.NET Core接口返回500错误:全球化不变模式文化异常排查与解决

问题概述

开发的ASP.NET Core服务器在Swagger中调用Get、Post、Put等接口时均返回500错误,错误日志显示System.Globalization.CultureNotFoundException,提示en-us is an invalid culture identifier,且明确指出处于全球化不变模式。

错误核心分析

该异常是因为应用启用了全球化不变模式(Globalization Invariant Mode),在此模式下,.NET仅支持Invariant Culture,而Microsoft.Data.SqlClient尝试加载en-us文化时触发了异常,最终导致数据库连接和操作失败。

解决步骤

1. 禁用全球化不变模式

如果项目不需要启用该模式,直接关闭即可:

  • 打开项目的.csproj文件,查找并移除以下配置(如果存在):
    <InvariantGlobalization>true</InvariantGlobalization>
    
  • 检查系统或项目的环境变量,移除DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1的设置。

2. 强制SqlClient使用不变文化

如果必须保留全球化不变模式,可强制SqlClient全局使用不变文化:
在Program.cs的builder.Build()之前添加以下代码:

using System.Globalization;
using Microsoft.Data.SqlClient;

// 强制SqlClient使用不变文化
SqlConnection.Globalization = CultureInfo.InvariantCulture;

3. 修正连接字符串

当前连接字符串存在语法错误和冗余配置,可能间接导致连接问题,修正为:

"ConnectionStrings": {
  "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=WebApiReact;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False"
}
  • 移除了重复的Database配置,将逗号分隔改为分号,确保语法正确。

额外需要修复的潜在问题

虽然不是当前500错误的直接原因,但以下问题可能导致后续数据库操作异常:

实体模型与数据库约束不匹配

实体类FoodDatabase中Description属性的MaxLength(150)与Column(TypeName = "nvarchar(300)")不匹配,迁移文件中也显示数据库字段的maxLength: 150但类型是nvarchar(300),需统一:

  • 方案1:修改实体类,将Description的MaxLength改为300:
    [MaxLength(300), Column(TypeName = "nvarchar(300)")]
    public string Description { get; set; } = "Description";
    
  • 方案2:修改实体类,将Column(TypeName)改为nvarchar(150):
    [MaxLength(150), Column(TypeName = "nvarchar(150)")]
    public string Description { get; set; } = "Description";
    

修改后重新生成并应用迁移:

Add-Migration FixDescriptionLength
Update-Database

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:58:08