Как получить значение из applicationSettings? - PullRequest
5 голосов
/ 17 февраля 2012

Я пытаюсь получить значение службы в моем приложении из app.config.Я должен отправить его в приложение, которое показывает URL.Веб-сервис, который я использую в этом приложении, также использует его, поэтому не может переместить его в appSettings.

Я хочу получить это значение 'http://192.168.4.22:82/Service.asmx' через код c #.

<applicationSettings>
    <SDHSServer.Properties.Settings>
      <setting name="DOServer_WebReference1_Service" serializeAs="String">
        <value>http://192.168.4.22:82/Service.asmx</value>
      </setting>
    </SDHSServer.Properties.Settings>
  </applicationSettings>

Ответы [ 4 ]

8 голосов
/ 17 февраля 2012

Не уверен, что я получу вопрос,

string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;

ответит вам

4 голосов
/ 14 марта 2013

Я использую этот код на сайте ASP.Net 4.0 для извлечения данных раздела из раздела 'applicationsetting':

public sealed class SiteSupport {


    /// <summary>
    /// Retrieve specific section value from the web.config
    /// </summary>
    /// <param name="configSection">Main Web.config section</param>
    /// <param name="subSection">Child Section{One layer down}</param>
    /// <param name="innersection">Keyed on Section Name</param>
    /// <param name="propertyName">Element property name</param>
    /// <returns></returns>
    /// <example>string setting = NoordWorld.Common.Utilities.SiteSupport.RetrieveApplicationSetting("applicationSettings", "NoordWorld.ServiceSite.Properties.Settings", "ServiceWS_SrvWebReference_Service", "value")</example>
    public static string RetrieveApplicationSetting(string configSection, string subSection, string innersection, string propertyName) {
        string result = string.Empty;
        HttpWorkerRequest fakeWorkerRequest = null;
        try {
            using (TextWriter textWriter = new StringWriter()) {
                fakeWorkerRequest = new SimpleWorkerRequest("default.aspx", "", textWriter);
                var fakeHTTPContext = new HttpContext(fakeWorkerRequest);
                Configuration config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = fakeHTTPContext.Server.MapPath(@"~/Web.config") }, ConfigurationUserLevel.None);
                ConfigurationSectionGroup group = config.SectionGroups[configSection];
                if (group != null) {
                    ClientSettingsSection clientSection = group.Sections[subSection] as ClientSettingsSection;
                    if (clientSection != null) {
                        SettingElement settingElement = clientSection.Settings.Get(innersection);
                        if (settingElement != null) {
                            result = (((SettingValueElement)(settingElement.ElementInformation.Properties[propertyName].Value)).ValueXml).InnerText;
                        }
                    }
                }
            }
        } catch (Exception ex) {
            throw ex;
        } finally {
            fakeWorkerRequest.CloseConnection();
        }
        return result;
    }
}

https://www.ServiceWS.com/webservices/Golf

4 голосов
/ 17 февраля 2012

Если я правильно вас понял, у вас есть два проекта Visual Studio C #. Первый (проект А) имеет настройку, к которой вы хотите получить доступ во втором (проект Б). Для этого вам необходимо выполнить следующие шаги:

  • Добавить ссылку из проекта B в проект A

  • Измените модификатор доступа настроек i в проекте A на public (по умолчанию - внутренний)

    Visual Studio settings editor

  • Теперь вы можете получить доступ к настройке в проекте B, в вашем случае, используя полное имя SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service

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

В этом примере файл App.config для проекта A будет содержать значение для параметра, равное http://192.168.4.22:82/Service.asmx. Однако вы можете переопределить это в файле App.config для проекта B, чтобы получить другое значение. Это, вероятно, не то, что вы хотите сделать, но вы должны знать об этом.

0 голосов
/ 16 сентября 2014

Зависит что-то вроде этого.

  var s = SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service;

или

  var s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;
...