【问题标题】:ConnectionString in .NET Core 6.NET Core 6 中的连接字符串
【发布时间】:2022-01-08 11:30:43
【问题描述】:

我正在使用 .NET Core 6 Web API。但我现在似乎无法弄清楚连接字符串是如何工作的。

这里被注释掉的第一部分工作正常。但我需要能够将程序扔到不同的系统上并用appsettings.json更改连接字符串。

第二部分是我尝试过的,但是没有用。

Config connection string in .net core 6 是我从那里得到它的。

//builder.Services.AddDbContext<TodoContext>(opt =>
//    opt.UseSqlServer(@"Data Source=JOHANDRE\\SQL2017; Database=ToDoItems; User=xxx; Password=xxx;"));

builder.Services.AddDbContext<TodoContext>(opt =>
    opt.UseSqlServer(builder.Configuration.GetConnectionString("ToDoItemsDatabase")));

我的appsettings.json

"ConnectionStrings": {
      "ToDoItemsDatabase": "Server=JOHANDRE\\SQL2017; Database=ToDoItems; User=xxx; Password=xxx;"
  },

我想补充一点,它不会引发错误。它似乎没有找到连接。

【问题讨论】:

  • 您确实意识到连接字符串不同吧? Data Source=JOHANDRE\\SQL2017;Server=JOHANDRE\\SQL2017;
  • 是的,我尝试了两种方法,服务器和数据源都不能在 appsettings 中工作,但我可以直接在 Program.cs 中使用。一定只是错过了将其更改回相同的问题
  • 好的任何错误/日志消息?像这样可以是任何东西
  • @GuruStron 运行服务时,可以将调试器附加到它。这样做我可以看到服务运行良好,但 connString 设置为“null”,我也在另一个项目上对其进行了测试,一旦它作为服务运行,我的 dbCon 和 ApiKey 设置为 null。希望我能正确分享这个。 github.com/Johandre296/WinServiceTest.git 是 admin cmd 中的这个 WinService 存储库,你可以说 "sc create "serviceName" binPath="where ever you put\theExe" 然后在服务下启动它。github.com/Johandre296/ToDoItems.git 测试项目。
  • @Jorra 请尝试新的。

标签: sql asp.net-core connection-string asp.net-core-6.0


【解决方案1】:

问题是如何从服务启动 Web API。您正在使用 Process 而不将 ProcessStartInfo.WorkingDirectory 设置为包含 exe 和配置的文件夹,并且启动的进程与父进程共享工作目录,因此请将 appsettings.json 移动到父项目文件夹或设置 WorkingDirectory 以匹配包含exe的目录:

toDoTest.StartInfo.UseShellExecute = false;
toDoTest.StartInfo.WorkingDirectory = "C:\\Develop\\ToDoMVCtutorial\\bin\\Release\\net6.0\\publish\\";

您也可以尝试redirecting 您的 Web API 输出来捕获日志。

【讨论】:

  • 非常感谢。终于解决了
  • @Jorra 很乐意提供帮助!如果答案对您有用,请将其标记为accepted one(答案旁边的复选标记)。
猜你喜欢
  • 2021-10-29
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 2017-05-06
相关资源
最近更新 更多