无法从 Azure 应用服务配置应用程序设置中读取 Azure SignalR 连接字符串
Unable to read Azure SignalR Connection String from Azure App Service Configuration Application Settings
我正在开发 Azure SignalR 应用程序,当我在我的 appsettings.json 中设置以下部分时,我的本地计算机上一切正常:
"Azure": {
"SignalR": {
"ConnectionString": "XXXXX"
}
}
然后在我的startup.cs中初始化如下:
services.AddSignalR().AddAzureSignalR();
但是,当我使用 App Service>Configration>ApplicationSettings 在我的 Azure App Service 中创建相同的环境变量时:
我的应用程序无法启动,出现以下应用程序错误:
System.ArgumentException: Connection string missing required properties endpoint and accesskey. (Parameter 'connectionString')
at Microsoft.Azure.SignalR.ConnectionStringParser.Parse(String connectionString)
at Microsoft.Azure.SignalR.ServiceEndpoint..ctor(String connectionString, EndpointType type, String name)
当我将我的连接字符串硬核到 AddAzureSignalR() connectionstring 参数并部署时一切正常。
azuresignalR 似乎无法获取此环境变量,尽管也可以通过 Kudo Appsettings 页面看到它 Azure:SginalR:ConnectionString。
你需要这样启动,
string azureSignalrConnectionString = configuration["Azure:SignalR:ConnectionString"];
services.AddSignalR().AddNewtonsoftJsonProtocol().AddAzureSignalR(options =>
{
options.ConnectionString = azureSignalrConnectionString;
});
所以我在 Azure SignalR github 页面上问了同样的问题,下面是我得到的答案:
EnvironmentVariablesConfigurationProvider automatically replaces __
with : . So when you configures connection string via environment
variables, you should use Azure__SignalR__ConnectionString as the key.
When you configures it via JSON file, you should use the origin key
Azure:SignalR:ConnectionString.
一旦我将其更改为双下划线,一切正常
对于net core 5,使用:
string azureSignalrConnectionString = Configuration["Azure:SignalR:ConnectionString"];
services.AddSignalR()
.AddAzureSignalR(options =>
{
options.ConnectionString = azureSignalrConnectionString;
});
appsettings.json,喜欢:
{
"Azure": {
"SignalR": {
"ConnectionString": "<your-connection-string>"
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
我正在开发 Azure SignalR 应用程序,当我在我的 appsettings.json 中设置以下部分时,我的本地计算机上一切正常:
"Azure": {
"SignalR": {
"ConnectionString": "XXXXX"
}
}
然后在我的startup.cs中初始化如下:
services.AddSignalR().AddAzureSignalR();
但是,当我使用 App Service>Configration>ApplicationSettings 在我的 Azure App Service 中创建相同的环境变量时:
我的应用程序无法启动,出现以下应用程序错误:
System.ArgumentException: Connection string missing required properties endpoint and accesskey. (Parameter 'connectionString')
at Microsoft.Azure.SignalR.ConnectionStringParser.Parse(String connectionString)
at Microsoft.Azure.SignalR.ServiceEndpoint..ctor(String connectionString, EndpointType type, String name)
当我将我的连接字符串硬核到 AddAzureSignalR() connectionstring 参数并部署时一切正常。
azuresignalR 似乎无法获取此环境变量,尽管也可以通过 Kudo Appsettings 页面看到它 Azure:SginalR:ConnectionString。
你需要这样启动,
string azureSignalrConnectionString = configuration["Azure:SignalR:ConnectionString"];
services.AddSignalR().AddNewtonsoftJsonProtocol().AddAzureSignalR(options =>
{
options.ConnectionString = azureSignalrConnectionString;
});
所以我在 Azure SignalR github 页面上问了同样的问题,下面是我得到的答案:
EnvironmentVariablesConfigurationProvider automatically replaces __ with : . So when you configures connection string via environment variables, you should use Azure__SignalR__ConnectionString as the key. When you configures it via JSON file, you should use the origin key Azure:SignalR:ConnectionString.
一旦我将其更改为双下划线,一切正常
对于net core 5,使用:
string azureSignalrConnectionString = Configuration["Azure:SignalR:ConnectionString"];
services.AddSignalR()
.AddAzureSignalR(options =>
{
options.ConnectionString = azureSignalrConnectionString;
});
appsettings.json,喜欢:
{
"Azure": {
"SignalR": {
"ConnectionString": "<your-connection-string>"
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}