我有一个天蓝色的webjob,它有一些appitings用于api键等。
我还有一堆PRODUCTION天蓝色应用程序设置(在门户网站中指定),应该覆盖我的webjob配置appsettings ..但他们没有。
对于我的网站,他们按预期工作,一切都很好。但是对于webjobs,它们只是被完全忽略,而是使用配置中的应用程序设置。
这是天蓝色的错误吗?所有文档都表明这应该有用。
修改的
我发现this blog所有关于使用CloudConfigurationManager.GetSetting
的信息,所以我已经实现了它仍然无效 - 仍然使用web作业的应用设置文件中定义的设置:(
由于
答案 0 :(得分:7)
所以看起来我发现了一个错误!
这是因为我的AppSettings
是从另一个文件引用的,就像这样(在app.config中):
<AppSettings file="appsettings.config"/>
这基本上打破了azure的配置管理。
答案 1 :(得分:1)
使用
“D:\ home \ site \ wwwroot \”创建网站内文件的绝对路径。
在WebJob中指向wwwwroot目录中的任何文件。使用D:\ home \ site \ wwwroot \ appsettings.config的绝对路径应修复您的网站。
答案 2 :(得分:1)
您是仅在Web.config文件中设置了设置,还是在门户中设置了它们或使用VS“网站设置”工具?您需要在该级别设置与WebJobs相关的设置,而不仅仅是在Web.config中。完成后,重新启动您的网站,设置应该在那里。
答案 3 :(得分:1)
我遇到了几个共享公共设置文件的Web作业的类似问题。复制每个作业中的设置会很不方便。
有人提到在configSource=
中使用file=
而不是app.config
来引用外部配置设置文件。我尝试过这个,现在它似乎按预期工作了。这些设置是从Portal App Settings而不是现在的文件中获取的。
幸运的是,Web作业的设置都来自外部文件。使用file=
允许我使用额外的每个应用程序设置,而不仅仅是文件中的设置,但幸运的是我不需要这样做。
答案 4 :(得分:0)
此问题的解决方法是将设置内联放在Web.config的AppSettings标记中,如下所示。
<AppSettings>
<add key="host" value="someHost" />
</AppSettings>
答案 5 :(得分:0)
我遇到了类似的问题,但对我而言,我们设置了&#34; is_in_place&#34; settings.job值为true。我想当它到位时,它不会用设置更新配置文件。我们并没有严格要求它运行到位,因此删除该设置可以解决我们的问题。
答案 6 :(得分:0)
Azure App Service应用程序设置保留在环境变量中。转到Azure门户添加应用程序设置或连接字符串值。然后,您可以在https://sitename.scm.azurewebsites.net
查看应用服务的环境变量如果您希望您的网络工具共享这些设置,请在您的webjob项目中创建一个appsettings.json:
{
"APPSETTING_AzureWebJobsDashboard": "",
"APPSETTING_AzureWebJobsStorage": "",
"SQLAZURECONNSTR_xxx": ""
}
在您的Main()方法
中private static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
var configurations = builder.Build();
var services = new ServiceCollection()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(configurations["SQLAZURECONNSTR_xxx"]),
ServiceLifetime.Transient)
.BuildServiceProvider();
var host = new JobHost(new JobHostConfiguration
{
DashboardConnectionString = configurations["APPSETTING_AzureWebJobsDashboard"],
StorageConnectionString = configurations["APPSETTING_AzureWebJobsStorage"]
});
host.RunAndBlock();
}
这比试图找出应用服务上网站配置的路径
更简单