Чтение строки подключения, определенной в web.config из службы Windows - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь прочитать строку подключения, определенную в web.config, из службы Windows. Имя сайта MySite и размещено в IIS по адресу http://localhost:31000, а физический путь - C:\inetpub\wwwroot\MySite

Проблема заключается в следующем коде всегда читает строку подключения из системного уровня machine.config, а не web.config этого сайта,Я пробовал разные настройки и код, но тот же результат. Что я делаю не так?

var configFile = new FileInfo(@"C:\inetpub\wwwroot\MySite\web.config");
var vdm = new System.Web.Configuration.VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
var wcfm = new System.Web.Configuration.WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
ConnectionStringsSection csSection = config.ConnectionStrings;
for (int i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++)
{
  ConnectionStringSettings cs = csSection.ConnectionStrings[i];

  if (cs.Name == 'SQLServerConnectionString')
    return cs.ConnectionString;
}

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Согласно вашему описанию, я предлагаю вам попробовать использовать System.Xmllibrary для чтения файла конфигурации и использовать метод select для выбора узла строки подключения в файле конфигурации.

Более подробно, вы можете обратитьсяна следующие коды:

        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(@"The path");
        XmlNodeList xnodes = xdoc.SelectSingleNode("/configuration/connectionStrings").ChildNodes;
        foreach (XmlNode item in xnodes)
        {
            if (item.Attributes[0].Value == "ConnectionString")
            {
                Console.WriteLine(item.Attributes[1].Value);
            }
        }

Результат:

enter image description here

0 голосов
/ 09 октября 2019

Это должно быть намного проще. Это все, что вам нужно для чтения строки подключения из файла web.config.

<ConnectionStrings>
 <add name="SQLServerConnectionString" connectionString="" />
</ConnectionStrings> 

var connectionString = ConfigurationManager.ConnectionStrings["SQLServerConnectionString"].ConnectionString;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...