代码之家  ›  专栏  ›  技术社区  ›  ossentoo

用于容器的Azure Web应用程序(AspNetCore 2.2)启动时未读取Azure AppSettings值

  •  0
  • ossentoo  · 技术社区  · 6 年前

    我有一个在Azure中运行的容器的webapp,我在本地使用一个本地appsettings文件。

    一旦部署到Azure,我希望容器从Azure设置中提取AppSettings值。这些是通过azuredevops设置的,当我检查门户时会正确显示。

    但是,一旦部署之后,该站点就不会从Azure中提取AppSettings值。它正在使用文件中的那些。我正在使用指定的双下划线名称。

    我已经创建了一个testcontroller来输出appsettings值。这是测试视图输出的一个片段:

    Build version: 2019.1.23.1
    Location: local
    Database__DatabaseConnectionString: Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=application;Data Source=.
    ---
    -------
    Env vars: Key WEBSITE_AUTH_SIGNING_KEY Value ASDS*(&*&*(SDSD05C29
    Key DOTNET_RUNNING_IN_CONTAINER Value true
    Key WEBSITE_ROLE_INSTANCE_ID Value 0
    Key Database__DatabaseConnectionString Value Server=tcp:servername01.database.windows.net,1433;Initial Catalog=application;Persist Security Info=False;User ID=applicationUser;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
    Key APPSETTING_Database__DatabaseConnectionString Value Server=tcp:servername01.database.windows.net,1433;Initial Catalog=application;Persist Security Info=False;User ID=applicationUser;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

    如图所示,应用程序应该使用数据库连接字符串。但事实并非如此。

    这里可能有什么问题?根据aspnetcore文档,这应该是标准功能。

    1 回复  |  直到 6 年前
        1
  •  0
  •   ossentoo    6 年前

    结果发现这是应用程序中的一个错误。有问题的控制器将注入的IOP注入到构造函数中。不幸的是,其中一个控制器有不同的行为,因为一个具体的实例正在被注入。由于在startup.cs中未正确初始化此对象,因此会将空值传递给构造函数。

    最后,当找到空值时,这意味着使用了默认的appsettings.json值。

    修复了上述错误(通过确保所有控制器使用相同的IOPTIONS值),应用程序将在启动时正确获取和使用Azure AppSettings值。