Почему параметры конфигурации .net компилируются в сборки? - PullRequest
3 голосов
/ 05 февраля 2009

Я пытался прочитать о том, как правильно настроить конфигурацию в .net, и столкнулся с чем-то, что я нахожу немного странным, и это то, что параметры конфигурации компилируются в сборки через класс Settings. Удаление app.config и запуск приложения не приводит к ошибкам конфигурации, как я ожидал, но теперь у меня нет способа заменить значения конфигурации.

В моем приложении у меня есть параметр конфигурации для URL веб-службы, который мне нужно иметь возможность подбирать и устанавливать программно. Должен ли я создавать пользовательские разделы в конфигурации для своего приложения, которые я буду читать через ConfigurationManager.GetSection (..), чтобы инициировать чтение файла конфигурации, или есть другой способ обойти эту проблему, поскольку я абсолютно не хочу URL-адрес веб-службы используется для генерации прокси-сервера ws в качестве URL-адреса, который потенциально может проникнуть в рабочую среду.

Пожалуйста, помогите.

Ответы [ 7 ]

1 голос
/ 05 февраля 2009

Попробуйте добавить в проект файл конфигурации приложения, а не файл настроек. Файл конфигурации приложения не компилируется в сборку.

1 голос
/ 05 февраля 2009
0 голосов
/ 05 февраля 2009

Мне кажется, я понимаю, что вы говорите, Джоджо. Скажем, вы добавляете веб-сервис с www.productionurl.com, сгенерированный прокси-класс сохраняет производственный URL в исходном коде. Во время выполнения он использует это значение по умолчанию, если не может найти значение для url в файле конфигурации (при условии, что вы установили для службы значение Dynamic).

Если вам не нравится это поведение, у вас есть 2 варианта:

  • изменить файл Reference.cs (вам придется продолжать делать это всякий раз, когда вы обновляете прокси службы)
  • Создать частичный класс для прокси и переопределить настройку URL

Или вы можете проверить, есть ли у веб-службы сайт разработки. Если это так, создайте веб-ссылку с этого сайта вместо рабочего сайта.

0 голосов
/ 05 февраля 2009

Насколько я знаю, логика ссылок на веб-сервис гласит, что если в app.config (или web.config) есть определенный ключ, он выберет это ... если нет ... он будет использовать ссылку на URL создать ссылку на веб-сервис. Это в Framework 1.1 и может быть 2.0.

Файл Settings.settings ... в Framework 3.0, по крайней мере, используется в качестве значений по умолчанию. Если вы не предоставите ключ в файле web.config, который переопределяет ключи в файле Settings.settings, он использует значения по умолчанию ... и именно поэтому вы не видите ошибку конфигурации. В случае ссылок на веб-сервисы в этом файле хранится значение, которое вы предоставляете для создания ссылки.

Как я вижу ... Settings.settings позволяет вам обновлять ключи программно, чтобы сохранить настройки и некоторые способы их сохранения.

Подробнее:

0 голосов
/ 05 февраля 2009

Насколько я помню (я нуждаюсь в исправлении), .Net создает файл конфигурации, который хранится в папке данных вашего приложения Windows, это особенно верно, если вы развертываете приложение.

Выполните поиск в данных приложения (C: \ Documents and settings \ yourusername \ Local Setting \ Application Data \ имя вашего приложения) и посмотрите, сможете ли вы найти там конфигурацию приложения. Если вы сможете изменить ее там .

Также я не уверен, какой тип веб-службы вы создаете, но не следует ли вам использовать web.config (это то, что я использую) для хранения настроек?

0 голосов
/ 05 февраля 2009

Когда вы добавляете ссылку на веб-сервис, вы можете установить свойство, чтобы сделать URL-адрес веб-сервиса динамическим (то есть читать из файла конфигурации).

Нажмите на «Веб-ссылки». Нажмите на свой веб-сервис и установите для свойства «Поведение URL» значение «Статический» - «Динамический».

После внесения изменений все, что вам нужно сделать, чтобы указать веб-сервису правильный URL-адрес, это изменить файл конфигурации перед запуском приложения.

0 голосов
/ 05 февраля 2009

Если вы нажмете плюс в свойствах, а затем в настройках, вы найдете файл с именем settings.designer.cs

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

Однако вы всегда можете переопределить это значение.

Ваш единственный способ проверить это - создать значение по умолчанию, безопасное для общего пользования, и изменить его во время тестирования.

...