2012-02-17 46 views
5

Estoy tratando de obtener el valor del servicio en mi aplicación desde app.config. Tengo que enviarlo a la aplicación que muestra la URL. Un servicio web que estoy consumiendo en esta aplicación también lo usa así que no puedo moverlo a appSettings.¿Cómo obtener valor de applicationSettings?

Quiero obtener este valor 'http://192.168.4.22:82/Service.asmx' a través del código 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> 
+1

[System.Configuration.ConfigurationManager.GetSection()] (http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx) –

+0

O en una [manera más fuertemente tipada] (http://msdn.microsoft.com/en-us/library/aa730869 (v = vs.80) .aspx). Trabajé con la aplicación ASP.NET pero no creo que haya una gran diferencia. – Oybek

+0

Su fragmento de arriba muestra que la configuración que está tratando de obtener ya está * en * la configuración de la aplicación, que usted dijo que no quería hacer. ¿Cuál es? –

Respuesta

8

No estoy seguro me sale la pregunta,

string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service; 

le conseguirá que

4

Si he entendido bien tiene dos proyectos de Visual Studio C#. El primero (proyecto A) tiene una configuración a la que desea acceder en el segundo (proyecto B). Para hacer esto, usted tiene que realizar los siguientes pasos:

  • agregar una referencia de proyecto B para proyectar un cambio

  • el modificador de acceso de los ajustes que proyecto de A a pública (por defecto es interno)

    Visual Studio settings editor

  • Ahora se puede acceder a la configuración en el proyecto B, en su caso, utilizando el nombre completo SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service

Tenga en cuenta que en el editor de configuraciones puede establecer un valor para la configuración. Este es el valor predeterminado para la configuración y este valor también se almacena en el archivo App.config para el proyecto. Sin embargo, puede anular este valor proporcionando otro valor en el archivo App.config para la ejecución de la aplicación.

En este ejemplo, el archivo App.config para el proyecto A contendrá el valor para la configuración que es http://192.168.4.22:82/Service.asmx. Sin embargo, puede anular esto en el archivo App.config para el proyecto B para obtener otro valor. Probablemente eso no es lo que quieres hacer, pero debes ser consciente de esto.

+0

Pulgares arriba para mencionar el hecho de que debe establecer el modificador de acceso de las configuraciones en público para poder acceder a él. –

2

utilizo este código en un sitio ASP.Net 4.0 para tirar de datos de la sección de la sección '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

0

Depende algo como esto.

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

o

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