Как получить доступ к web.config для службы WCF, размещенной в IIS, из кода «внутри» службы - PullRequest
0 голосов
/ 14 апреля 2020

Как гласит заголовок, после переопределения наших целей мы сократили наши 2 службы до 1, который размещен в IIS 10.0 на сервере Windows 2019 с использованием BasicHttpBinding - методом проб и ошибок я обнаружил, что главной проблемой, с которой я сталкивался раньше, была вызвано тем, что указанный сервер не является частью локальной службы DNS. Поэтому я переписал строку подключения к нашему серверу баз данных, используя простой IP. Это работает. Чтобы упростить настройку, я добавил новую строку в раздел appSettings в web.config моих сервисов

<appSettings>
<add key="Database" value="<whole connection string>"/>

Я нашел фрагмент кода, предоставленный Microsoft для доступа к web.config - но, похоже, он анализирует неправильный файл web.config, поскольку мои данные отсутствуют / весь раздел кажется пустым при синтаксическом анализе ...

мой использованный код

        //Scan Thru the keys and use the Configuration Manager to make this happen
        System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration(null) as System.Configuration.Configuration;
        // Get the appSettings.
        KeyValueConfigurationCollection appSettings = config.AppSettings.Settings;
        String ret="";
        foreach (string key in appSettings.AllKeys)
        {
            //Get your key
            string tmpKey = appSettings[key].Value;

            switch (key)
            {
                case "Database":
                    ret = tmpKey;
                    break;
            }
        }

тогда я использовал бы "ret" для построения фактического соединение ... но до сих пор не удается, так как приведенный выше код не находит "что-нибудь" в appSettings.AllKeys (коллекция пуста). Любые намеки на рабочий код будут с благодарностью. Или null - неправильный параметр, хотя подсказки кода предполагают, что null указывает на исходный файл web.config

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Обычно вы можете использовать приведенные ниже фрагменты кода для получения значения в разделе AppSettings.

var result = ConfigurationManager.AppSettings["mykey"];
            Console.WriteLine(result.ToString());

Вот официальный пример и объяснение.
https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?view=netframework-4.8
https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager?view=netframework-4.8
Не стесняйтесь, дайте мне знать если есть что-нибудь, с чем я могу помочь.

1 голос
/ 14 апреля 2020

Вы должны иметь доступ к настройке приложения, используя

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