2012-02-17 19 views
5

Sto cercando di ottenere il valore del servizio nella mia applicazione da app.config. Devo inviarlo all'applicazione che mostra l'URL. Un servizio Web che sto consumando in questa applicazione lo utilizza anche per cui non è possibile spostarlo in appSettings.Come ottenere il valore da applicationSettings?

Desidero ottenere questo valore 'http://192.168.4.22:82/Service.asmx' attraverso il codice 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 in un [modo più fortemente tipizzato] (http://msdn.microsoft.com/en-us/library/aa730869 (v = vs80) .aspx). Ha funzionato con l'app ASP.NET ma non penso che ci sia una grande differenza. – Oybek

+0

Lo snippet qui sopra mostra l'impostazione che stai cercando di ottenere è già * in * l'appSettings, che hai detto che non volevi fare. Cos'è questo? –

risposta

8

Non sono sicuro io ottenere la questione,

string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service; 

ti porterà lo

4

Se ho capito bene si dispone di due progetti di Visual Studio C#. Il primo (progetto A) ha un'impostazione a cui si desidera accedere nel secondo (progetto B). Per fare questo è necessario eseguire le seguenti operazioni:

  • aggiunge un riferimento dal progetto B per proiettare

  • Modificare il modificatore di accesso delle impostazioni di proiettare un al pubblico (l'impostazione predefinita è interna)

    Visual Studio settings editor

  • Ora è possibile accedere alla impostazione nel progetto B, nel tuo caso utilizzando il nome completo SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service

Nota che nell'editor impostazioni è possibile impostare un valore per l'impostazione. Questo è il valore predefinito per l'impostazione e questo valore è anche memorizzato nel file App.config per il progetto. Tuttavia, è possibile sovrascrivere questo valore fornendo un altro valore nel file App.config per l'esecuzione dell'applicazione.

In questo esempio, il file App.config per il progetto A conterrà il valore dell'impostazione che è http://192.168.4.22:82/Service.asmx. Tuttavia, è possibile sovrascriverlo nel file App.config per il progetto B per ottenere un altro valore. Probabilmente non è quello che vuoi fare ma dovresti esserne consapevole.

+0

Pollice in alto per menzionare il fatto che è necessario impostare il modificatore di accesso delle impostazioni su pubblico per accedervi. –

2

Io uso questo codice in un sito ASP.Net 4.0 per estrarre i dati della sezione fuori della sezione '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

Dipende qualcosa di simile.

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

o

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