c# - 在azure辅助角色中获取连接字符串名称

标签 c# azure azure-service-runtime

我目前正在将 IConfigFileSettings 的具体 ConfigFileSettings 注入(inject)到需要连接字符串名称的类中。简化后的代码如下所示:

public interface IConfigFileSettings
{
    string GetConnectionString(string name);
}

public class ConfigFileSettings : IConfigFileSettings
{
    public string GetConnectionString(string name)
    {
        return ConfigurationManager.ConnectionStrings[name].Name;
    }
}

这对于 iis、Windows 服务和控制台应用程序中托管的 webapi 来说效果很好。我猜:

ConfigurationManager.ConnectionStrings[name].Name

不适用于 worker 角色。我可以调整 GetConnectionString 方法以使其在所有环境中透明地工作吗?另外,即使我获得连接字符串名称(例如从 .cscfg 文件),我的代码也会查找:

<connectionStrings> ... </connectionStrings>

我想我不能只在 .cscfg 文件中添加一个条目?

最佳答案

您可以将它们放入 .cscfg 文件中,例如:

<?xml version="1.0"?>
<ServiceConfiguration serviceName="Web.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2013-03.2.0">
  <Role name="Worker">
    <Instances count="2" />
    <ConfigurationSettings>
      <Setting name="connectionstringname" value="connectionstringvalue" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

然后您可以通过以下方式阅读它们:

var connectionstring = RoleEnvironment.GetConfigurationSettingValue("connectionstringname");

关于c# - 在azure辅助角色中获取连接字符串名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754756/

相关文章:

angularjs - webapp部署到azurewebsites.net后,无法从子文件夹加载xml文件

升级到 2.0 后,Azure CloudStorageAccount.SetConfigurationSettingPublisher() 无效

c# - 检测 .NET 应用程序是在 Azure 还是非 Azure 环境中运行

c# - 如何从 Azure 云服务的代码中获取服务名称?

c# - 是否可以统一序列化 Sprite ?

c# - 在 C# 中处理 Outlook 邮件中的超链接单击事件

azure - 在 Azure 云上编排按需作业

c# - ASP.NET Web API - 没有 'MediaTypeFormatter' 可用于读取类型为 'Int32' 的对象

c# - .NET 手动重置事件

Azure 函数 : deployment from Git does not work with . NET 7