Configuration.GetConnectionString 在 VS Code 上运行 asp.net 核心时返回 null 但在 Visual Studio 上很好
Posted
技术标签:
【中文标题】Configuration.GetConnectionString 在 VS Code 上运行 asp.net 核心时返回 null 但在 Visual Studio 上很好【英文标题】:Configuration.GetConnectionString returns null when running asp.net core on VS Code but fine on Visual Studio 【发布时间】:2017-01-30 09:41:44 【问题描述】:这是我的 appsettings.json 文件
"ConnectionStrings":
"DefaultConnection": "Host=localhost;Port=5432;Database=db;User ID=postgres;Password=root"
,
"Logging":
"IncludeScopes": false,
"LogLevel":
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
这就是我检索连接字符串的方式:
// Only works when run through visual studio not on vs code
Configuration.GetConnectionString("DefaultConnection")
我的launch.json
"version": "0.2.0",
"configurations": [
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "$workspaceRoot\\src\\Chlx\\bin\\Debug\\netcoreapp1.0\\Chlx.dll",
"args": [],
"cwd": "$workspaceRoot",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"launchBrowser":
"enabled": true,
"args": "$auto-detect-url",
"windows":
"command": "cmd.exe",
"args": "/C start $auto-detect-url"
,
"osx":
"command": "open"
,
"linux":
"command": "xdg-open"
,
"env":
"ASPNETCORE_ENVIRONMENT": "Development"
,
"sourceFileMap":
"/Views": "$workspaceRoot/Views"
,
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "$command.pickProcess"
]
我的tasks.json
"version": "0.1.0",
"command": "dotnet",
"isShellCommand": true,
"args": [],
"tasks": [
"taskName": "build",
"args": [
"$workspaceRoot\\src\\Chlx\\project.json"
],
"isBuildCommand": true,
"problemMatcher": "$msCompile"
]
你知道如何解决这个问题吗?
【问题讨论】:
你究竟是如何通过 VS Code “运行”它的? 我正在通过调试窗格 ".Net Core Launch (Web)" 运行它。我可以设置断点和获取连接字符串的方法在 vs 代码上返回 null 你如何在你的启动中设置配置? 在launchSettings.json中检查environmentVariables
。
请检查我的编辑家伙。我添加了一个launch.json 和tasks.json
【参考方案1】:
Configuration 属性在 Startup 类中定义,并通过依赖注入进行初始化。这是使用 dotnet new mvc -au Individual 创建的项目的示例
public Startup(IConfiguration configuration)
Configuration = configuration;
public IConfiguration Configuration get;
【讨论】:
【参考方案2】:您从根(解决方案级别)而不是从项目运行程序。将 launchsettings.json 中的“cwd”更改为 $workspaceRoot\src\Chlx\
【讨论】:
你太棒了 或者将 applicationsettings.json 添加到根文件夹。这为我解决了问题:) 在 ASP.NET Core 2.0 中,我有两个项目:WebApi 和 DataAccess。 WebApi 包含 appsettings.json。在父目录(包含两个项目)中,它是解决方案文件。我遇到了同样的问题,并且:在解决方案级别复制 appsettings.json 或从 WebApi 项目运行应用程序,其中任何一个都解决了我的问题以上是关于Configuration.GetConnectionString 在 VS Code 上运行 asp.net 核心时返回 null 但在 Visual Studio 上很好的主要内容,如果未能解决你的问题,请参考以下文章