Azure webjobs没有阅读网站appsettings

时间:2014-11-17 14:33:51

标签: azure azure-webjobs

我有一个天蓝色的webjob,它有一些appitings用于api键等。

我还有一堆PRODUCTION天蓝色应用程序设置(在门户网站中指定),应该覆盖我的webjob配置appsettings ..但他们没有。

对于我的网站,他们按预期工作,一切都很好。但是对于webjobs,它们只是被完全忽略,而是使用配置中的应用程序设置。

这是天蓝色的错误吗?所有文档都表明这应该有用。

修改

我发现this blog所有关于使用CloudConfigurationManager.GetSetting的信息,所以我已经实现了它仍然无效 - 仍然使用web作业的应用设置文件中定义的设置:(

由于

7 个答案:

答案 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();
        }

这比试图找出应用服务上网站配置的路径

更简单