簡體   English   中英

ASP.NET 核心 Web API - 項目參考中的 ConnectionString

[英]ASP.NET Core Web API - ConnectionString in project reference

我的解決方案中添加了一個 ASP.NET Core Web API 項目。 它使用連接到 SQL 服務器數據庫的項目依賴項,使用如下連接字符串:

public string connectionString = ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;

這工作正常,另一個 Web/WinForm 應用程序使用這個庫並連接到 SQL 服務器實例(連接字符串在 web.config 或 app.config 中設置)

問題:

ASP.NET Core Web API 工程從庫中使用連接串失敗,我設置了appsetting.json:

 "ConnectionStrings": {
    "ConnectionName": "Data Source=database;Initial Catalog=catalogname;User ID=username;Password=password;"
  },

但始終帶有連接名稱的連接字符串為 null,並且具有:

data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

似乎 ConfigurationManager 無法讀取 json 文件,您是否嘗試在您的 WebApi 項目中添加一個.config 文件? 我嘗試了以下兩種解決方案:

public  class Class1
    {
        public  string? con1 { get; set; }

        public   string? con2 { get; set; }
        public readonly IConfiguration Config;

        public Class1()
        {
            //read connectstring from .config file
            con1 = System.Configuration.ConfigurationManager.ConnectionStrings["ReadConnectStringContext"].ConnectionString;
            Config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
            //read connectstring from appsettings.json
            con2 = Config.GetConnectionString("ReadConnectStringContext");
        }

    }

結構:

在此處輸入圖像描述

結果:

在此處輸入圖像描述

這是 MS 的文檔:

Class 庫可以像可執行應用程序一樣訪問配置設置,但是,配置設置必須存在於客戶端應用程序的 App.config 文件中。 即使您將 App.config 文件與庫的程序集文件一起分發,庫代碼也不會讀取該文件。

一個快速修復方法是將正確的數據庫連接字符串部分放在 Web/WinForm 應用程序設置文件中。

如果您真的想使用庫項目中的應用程序設置,請使用自定義設置從庫項目中引用應用程序設置。 這是參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM