如何从applicationSettings获取价值?

时间:2012-02-17 14:23:32

标签: c# .net app-config windows-applications web-reference

我正试图从app.config获取我的应用程序中的服务价值。我必须将它发送到显示URL的应用程序。我在此应用程序中使用的Web服务也使用它,因此无法将其移动到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 个答案:

答案 0 :(得分:8)

我不确定是否有问题,

string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;

会得到它

答案 1 :(得分:4)

如果我理解正确,您有两个Visual Studio C#项目。第一个(项目A)具有您想要在第二个(项目B)中访问的设置。为此,您必须执行以下步骤:

  • 将项目B的引用添加到项目A

  • 将项目A的设置的访问修饰符更改为公共(默认为内部)

    Visual Studio settings editor

  • 现在,您可以使用完全限定名称SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service

  • 访问项目B中的设置

请注意,在设置编辑器中,您可以设置设置值。这是设置的默认值,该值也存储在项目的App.config文件中。但是,您可以通过在App.config文件中为执行的应用程序提供另一个值来覆盖此值。

在此示例中,项目A的App.config文件将包含设置的值http://192.168.4.22:82/Service.asmx。但是,您可以在项目B的App.config文件中覆盖此项以获取其他值。这可能不是你想要做的,但你应该知道这一点。

答案 2 :(得分:4)

我在ASP.Net 4.0网站中使用此代码将部分数据从“应用程序设置”部分中提取出来:

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   

答案 3 :(得分:0)

取决于这样的事情。

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

  var s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;