.net5 secrets.json 未在本地使用
.net5 secrets.json not being used locally
我有一个 .net5 网络应用程序,我试图在其中添加一个 secrets.json 文件,所以我右键单击并创建了该文件 - 在我的项目文件中我可以看到:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>1cb5a573-309c-4b03-b7e9-3c09794038bb</UserSecretsId>
</PropertyGroup>
secrets.json 文件存在于 AppData\Roaming\Microsoft\UserSecretscb5a573-309c-4b03-b7e9-3c09794038bb 中:
{
"GraphApi": {
"ClientSecret": "secret-key"
},
}
在我的 appsettings.json:
"GraphApi": {
"TenantId": "tenant-id",
"Scopes": ".default",
"ClientId": "client-id",
"ClientSecret": "From user secrets"
},
在我的 program.cs:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureAppConfiguration((hostContext, builder) =>
{
if (hostContext.HostingEnvironment.IsDevelopment())
{
// Use user secrets for local development
builder.AddUserSecrets<Program>();
}
});
但是,它没有从 secrets.json 中获取我的 ClientSecret
- 如果我将值放入 appsettings.json,它工作得很好 - 我还需要做什么吗使其发挥作用?
原来有一个 web.config 被添加到项目中,它 wsa 指向项目使用覆盖秘密的 appsettings.development 版本:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="bin\Debug\net5.0\Project.WebApp.exe" arguments="" stdoutLogEnabled="false" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_HTTPS_PORT" value="443" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
删除此文件和re-configuring使用 iis express 而不是 iis 的项目解决了问题
我有一个 .net5 网络应用程序,我试图在其中添加一个 secrets.json 文件,所以我右键单击并创建了该文件 - 在我的项目文件中我可以看到:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>1cb5a573-309c-4b03-b7e9-3c09794038bb</UserSecretsId>
</PropertyGroup>
secrets.json 文件存在于 AppData\Roaming\Microsoft\UserSecretscb5a573-309c-4b03-b7e9-3c09794038bb 中:
{
"GraphApi": {
"ClientSecret": "secret-key"
},
}
在我的 appsettings.json:
"GraphApi": {
"TenantId": "tenant-id",
"Scopes": ".default",
"ClientId": "client-id",
"ClientSecret": "From user secrets"
},
在我的 program.cs:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureAppConfiguration((hostContext, builder) =>
{
if (hostContext.HostingEnvironment.IsDevelopment())
{
// Use user secrets for local development
builder.AddUserSecrets<Program>();
}
});
但是,它没有从 secrets.json 中获取我的 ClientSecret
- 如果我将值放入 appsettings.json,它工作得很好 - 我还需要做什么吗使其发挥作用?
原来有一个 web.config 被添加到项目中,它 wsa 指向项目使用覆盖秘密的 appsettings.development 版本:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="bin\Debug\net5.0\Project.WebApp.exe" arguments="" stdoutLogEnabled="false" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_HTTPS_PORT" value="443" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
删除此文件和re-configuring使用 iis express 而不是 iis 的项目解决了问题