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

.NET 8 Web API使用Entity Framework Core取数时出现全球化不变模式错误

问题描述

我创建了一个示例复现错误:搭建ASP.NET Core 8 Web API,创建实体类TableExample:

using System.ComponentModel.DataAnnotations.Schema;

namespace api
{
    [Table("A")]
    public class TableExample
    {
        [Column("Example")]
        public int ColumnExample { get; set; }
    }
}

数据库中有一张名为A的表,包含Example列。DbContext类代码:

using Microsoft.EntityFrameworkCore;

namespace api
{
    public class Context : DbContext
    {
        public DbSet<TableExample> TableExamples { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Data Source=datasource;Initial Catalog=database;Trusted_Connection=true;MultipleActiveResultSets=true;TrustServerCertificate=True");
            base.OnConfiguring(optionsBuilder);
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
}

控制器中获取数据的代码:

using Microsoft.AspNetCore.Mvc;

namespace api.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : Controller
    {
        [HttpGet(Name = "GetWeatherForecast")]
        public IActionResult Get()
        {
            Context context = new Context();
            var test = context.TableExamples.ToList();

            return View();
        }
    }
}

运行API时触发错误:Only the invariant culture is supported in globalization-invariant(错误截图:错误截图)。

但将相同的类放到控制台应用中(Program.cs代码如下),运行完全正常:

using api;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Context context = new Context();
            var teste = context.TableExamples.ToList();
        }
    }
}

已知需要将Globalization.Invariant设为false,但我的launchSettings.json中没有相关配置,文件内容如下:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:35135",
      "sslPort": 44348
    }
  },
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "http://localhost:5024",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:7164;http://localhost:5024",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

如何修正API中的这个错误?


解决方案

方法1:修改项目文件(.csproj)

在项目的.csproj文件中添加以下配置,禁用全球化不变模式:

<PropertyGroup>
  <InvariantGlobalization>false</InvariantGlobalization>
</PropertyGroup>

方法2:在launchSettings.json中添加环境变量

在每个profile的environmentVariables节点下添加DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false,以http profile为例:

"http": {
  "commandName": "Project",
  "dotnetRunMessages": true,
  "launchBrowser": true,
  "launchUrl": "swagger",
  "applicationUrl": "http://localhost:5024",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development",
    "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT": "false"
  }
}

需要对https和IIS Express profile做同样的修改。

方法3:修改runtimeconfig.json

如果项目已经生成,找到输出目录中的[项目名].runtimeconfig.json文件,添加configProperties配置:

{
  "runtimeOptions": {
    "configProperties": {
      "System.Globalization.Invariant": false
    }
  }
}

补充说明

控制台应用正常是因为默认没有启用全球化不变模式,而ASP.NET Core项目可能因为某些发布配置或环境默认开启了该模式。上述方法任选其一即可解决问题,推荐优先使用方法1或方法2,便于项目统一管理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:22:49