azure - 在哪里设置和访问服务结构每个环境的运行时配置参数?

标签 azure azure-sql-database azure-service-fabric

对于本地和云这两种环境,我如何为 Sql 数据库、存储帐户等资源设置自定义设置或参数...理想情况下,它是在代码中调用的一个参数名称,表示指向 DbContext对于特定的数据库,本地或云环境的配置是不同的。谢谢。

最佳答案

为了让每个环境变量能够在本地和云中运行 Service Fabric,您必须执行以下操作:

  1. 将自定义配置部分和参数添加到 Service/Actor 项目的 Settings.xml 文件(位于项目根目录的\PackageRoot\Config\Settings.xml)。将参数留空,因为我们将在每个环境的其他地方设置这些参数。这是一个示例。
<?xml version="1.0" encoding="utf-8" ?>
<Settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<!-- Add your custom configuration sections and parameters here -->
    <Section Name="UserDatabase">
        <Parameter Name="UserDatabaseConnectionString" Value="" />
    </Section>
</Settings>
  • 在 Service Fabric 项目的 ApplicationManifest.xml 文件中,将有 <ServiceManifestImport>您所包含的每个项目的元素。下面将是 <ConfigOverrides>我们将在其中声明配置的哪些值将被 Service Fabric 项目中 ApplicationParameters 下的本地和云 xml 文件中每个环境设置的值所取代。在同一个 ApplicationManifest.xml 文件中,您需要添加将出现在本地和云 xml 文件中的参数,否则它们将在构建时被覆盖。
  • 继续上面的例子,这就是它的设置方式。

    <Parameters>
        <Parameter Name="ServiceName_InstanceCount" DefaultValue="-1" />
        <Parameter Name="UserDatabaseConnectionString" DefaultValue="" />
    </Parameters>
    <ConfigOverrides>
        <ConfigOverride Name="Config">
            <Settings>
                <Section Name="UserDatabase">
                    <Parameter Name="UserDatabaseConnectionString" Value="[UserDatabaseConnectionString]" />
                </Section>
            </Settings>
        </ConfigOverride>
    </ConfigOverrides>
    
  • 在 Service Fabric 项目的 ApplicationParameters 下的 local.xml 和 cloud.xml 文件中,您将指定环境特定的变量,如下所示。
  • <?xml version="1.0" encoding="utf-8"?>
    <Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/AppFabricName.ServiceFabric" xmlns="http://schemas.microsoft.com/2011/01/fabric">
        <Parameters>
            <Parameter Name="ServiceName_InstanceCount" Value="1" />
            <Parameter Name="UserDatabaseConnectionString" Value="Server=(localdb)\MsSqlLocalDb;Database=Users;User=ReadOnlyUser;Password=XXXXX;" />
        </Parameters>
    </Application>
    
  • 最后,在您的 Service/Actor 中,您可以像这样访问这些每个环境的配置变量。
  • var configurationPackage = Context.CodePackageActivationContext.GetConfigurationPackageObject("Config");
    
    var connectionStringParameter = configurationPackage.Settings.Sections["UserDatabase"].Parameters["UserDatabaseConnectionString"];
    

    关于azure - 在哪里设置和访问服务结构每个环境的运行时配置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928204/

    相关文章:

    azure - Azure Synapse 中的外部表性能非常慢

    azure - 有没有一种简单的方法可以恢复 Azure SQL 中意外删除的记录?

    azure - 如何为私有(private)Azure SQL数据库设置API管理,Function App

    c# - 服务结构: Calls between services are delayed?

    azure - 如何从 KQL 中的列表中删除 [UTC]

    git - 如何将 azure 远程分支替换为另一个远程分支 Azure DevOps

    javascript - 使用带有附件的 SendGrid 的 Azure Function (JS)

    asp.net - Azure SqlException : Database on server is not currently available

    c# - 从Visual Studio到Linux部署C#状态服务结构应用程序

    azure-service-fabric - Service Fabric 有状态服务因 FailFast 而失败