在没有启动文件的ASP.NET Core库项目中,我应该把连接字符串放在哪里?

5

我有一个asp.net core库项目。

我想要添加连接字符串。但是这个项目中没有启动类。我需要将连接字符串放在哪里,如何获取它?


2
不要将连接字符串添加到库中!!!连接字符串始终添加到应用程序的配置中,而不是库中。这就像在类库中保存密码一样,没有人可以更改它,每个获取该库的人都可以读取它... - Tseng
1个回答

7
在dotnet core中,您可以使用json文件来管理配置,这是配置应用程序的众多方法之一。
根据dotnet core配置文档,您可以简单地执行以下操作(从链接引用中复制)
using Microsoft.Extensions.Configuration;
using System;
using System.IO;

// Add NuGet <package id="Microsoft.Extensions.Configuration" and
// <package id="Microsoft.Extensions.Configuration.Json"
// .NET Framework 4.x use the following path:
//.SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), @"..\.."))

public class Program
{
    static public IConfigurationRoot Configuration { get; set; }
    public static void Main(string[] args = null)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json");

        Configuration = builder.Build();

        Console.WriteLine($"option1 = {Configuration["option1"]}");
        Console.WriteLine($"option2 = {Configuration["option2"]}");
        Console.WriteLine(
            $"option1 = {Configuration["subsection:suboption1"]}");
    }
}

然后在您的appsettings.json文件中添加:
{
    "ConnectionStrings": {
        "BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
    },
}

使用 Configuration.GetConnectionString("BloggingDatabase") 的代码可以访问它。

我还建议阅读关于连接字符串的dotnet core文档

编辑:正如评论中提到的,在库代码中不要添加连接字符串和配置文件 - 请从控制台应用程序或Web应用程序中执行此操作!

dotnet core 的其他配置形式包括 用户机密, 环境变量 ,以及可能在评论中指出的XML文件或其他存储形式。


这并不完全正确。配置系统允许你将设置放在各种地方,比如JSON文件、XML文件、环境变量、用户密钥等等。 - juunas
1
@juunas 你说得完全正确,谢谢你指出。我已经更新了帖子以更清楚地表达这个问题。 - nover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接