c# - ASP.NET 核心 MVC | System.ArgumentNullException : 'Value cannot be null. ' | Configuration. GetConnectionString

标签 c# asp.net-core-mvc connection-string appsettings

我在 Asp.NET Core 上使用 MVC,实际上,Startup 没有找到我的 ConnectionString 写入 appsettings.json。我已经尝试过 3 种不同的方式(评论中有 2 种)。不要注意“XXX”。

让我们看看: Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    [...]
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseOracle(Configuration.GetConnectionString("Web")));
    //options.UseOracle(Configuration.GetSection("ConnectionStrings")["Web"]));
    //options.UseOracle(Configuration.GetSection("Web")["ConnectionString"]));
    [...]
}

appsettings.json:

[...]
"ConnectionStrings": {
    "Test1": {
        "ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.X.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=XXX)));User Id=XXXXX;Password=XXXXX;",
            "ProviderName": "Oracle.ManagedDataAccess.Client"
    },
    "Web": {
        "ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.X.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=XXX)));User Id=XXXXX;Password=XXXXX;",
            "ProviderName": "Oracle.ManagedDataAccess.Client"
    },
    "Test2": {
        "ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.X.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=XXX)));User Id=XXXXX;Password=XXXXX;",
            "ProviderName": "Oracle.ManagedDataAccess.Client"
    }
}
[...]

& 当我构建要在浏览器中运行的项目时,我总是遇到这个错误:

System.ArgumentNullException : '值不能为空。 '

你有什么想法吗?

最佳答案

IServiceCollection.GetConnectionString 方法只是在键中添加前缀ConnectionStrings:

那么Configuration.GetConnectionString("Web")就类似于Configuration["ConnectionStrings:Web"]

在您的情况下,您需要:

Configuration["ConnectionStrings:Web:ConnectionString"]
//or
Configuration.GetConnectionString("Web:ConnectionString")

关于c# - ASP.NET 核心 MVC | System.ArgumentNullException : 'Value cannot be null. ' | Configuration. GetConnectionString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65336601/

相关文章:

c# - 在 EF 6 中的运行时更改连接字符串

c# - 无法连接到 SQL Server : Failed to retrieve data for this request

c# - 如何使用 XAML 资源作为 Mahapps.Metro 标题栏中的图标?

c# - 大整数的 Math.Cos() 精度

asp.net-mvc - 尝试确定在全新安装的 Windows 10 + vs2015 上托管您的应用程序的 DNX 进程的进程 ID 时发生错误

.net - 如何在 WinForms 应用程序中安全地存储连接字符串?

C#:从 INI 中删除部分及其键的最简单方法是什么

entity-framework - MVC6 Identity3 - 如何为多个 Web 应用程序创建通用用户帐户

asp.net-core - 使用库中的可配置路径映射 Controller 路由

entity-framework - 无法为无法识别的元素提供者检索元数据