我正试图从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>
答案 0 :(得分:8)
我不确定是否有问题,
string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;
会得到它
答案 1 :(得分:4)
如果我理解正确,您有两个Visual Studio C#项目。第一个(项目A)具有您想要在第二个(项目B)中访问的设置。为此,您必须执行以下步骤:
将项目B的引用添加到项目A
将项目A的设置的访问修饰符更改为公共(默认为内部)
现在,您可以使用完全限定名称SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service
请注意,在设置编辑器中,您可以设置设置值。这是设置的默认值,该值也存储在项目的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;
}
}
答案 3 :(得分:0)
取决于这样的事情。
var s = SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service;
或
var s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service;