我目前正在将 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/