6

我正在尝试从 app.config 在我的应用程序中获取服务价值。我必须将其发送到显示 URL 的应用程序。我在此应用程序中使用的 Web 服务也在使用它,因此无法将其移动到 appSettings。

我想通过 c# 代码获取这个值' http://192.168.4.22:82/Service.asmx '。

<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

4 回答 4

8

不知道我得到这个问题,

string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;

会给你的

于 2012-02-17T14:30:19.443 回答
4

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

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

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

    Visual Studio 设置编辑器

  • 现在您可以使用完全限定名称访问项目 B 中的设置SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service

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

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

于 2012-02-17T14:32:05.460 回答
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

于 2013-03-14T18:35:33.003 回答
0

取决于这样的事情。

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

或者

  var s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;
于 2014-09-16T17:44:24.310 回答