我在一个ASP.NET项目中,我需要为要安装网站的管理员提供几个参数,例如:
AllowUserToChangePanelLayout
AllowUserToDeleteCompany
等...
我的问题是,将这个添加到web.config文件中,使用我自己的configSession或添加为个人资料varibles会是一件好事吗?或者我应该为此创建一个XML文件?
你做什么,有什么缺点和好处?
我最初想过web.config,但后来才意识到我应该搞乱网站配置和我自己的网络应用配置,我应该创建一个不同的文件,我读this post,现在我是在这个地方......我应该这样做还是那个?
答案 0 :(得分:12)
我通常使用设置 - 可通过项目属性 - 设置获得。这些可以编辑并保存在代码中,我写一个表单/网页来编辑它们。
如果要使用XML配置,则会有一个名为file的属性读取外部文件。 您可以拥有web.config文件和someothername.config文件。 someothername.config将具有如下设置:
<appSettings>
<add key="ConnString" value="my conn string" />
<add key="MaxUsers" value="50" />
</appSettings>
web.config会有
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="ExternalWeb.config">
<add key="MyKey" value="MyValue" />
</appSettings>
</configuration>
有关我偷走的例子,请参阅DevX。
答案 1 :(得分:2)
只是为了让你们知道我做了configurator推荐的但是有所改变。
而不是一直询问(我需要)
System.Configuration.ConfigurationManager.AppSettings["myKey"];
我刚刚创建了一个静态类,它将使用强类型值调用的值来提取这些值(因此您不需要记住所有值)
mySettings 类
public static class mySettings
{
public enum SettingsType
{ UserPermitions, WebService, Alerts }
public enum SectionType
{ AllowChangeLayout, AllowUserDelete, MaximumReturnsFromSearch, MaximumOnBatch, SendTo }
public static String GetSettings(SettingsType type, SectionType section)
{
return
ConfigurationManager.AppSettings[
String.Format("{0}_{1}",
Enum.Parse(typeof(SettingsType), type.ToString()).ToString(),
Enum.Parse(typeof(SectionType), section.ToString()).ToString())
];
}
}
web.config appSettings部分
<configuration>
<appSettings file="myApp.config">
<add key="UserPermitions_AllowChangeLayout" value="" />
<add key="UserPermitions_AllowUserDelete" value="" />
<add key="WebService_MaximumReturnsFromSearch" value="" />
<add key="Alerts_SendTo" value="" />
<add key="Alerts_MaximumOnBatch" value="" />
</appSettings>
</configuration>
整个 myApp.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<!--
###
### This file serves the propose of a quick configuration.
### Administrator can either change this values directly or use the
### Settings tab in the application.
###
-->
<appSettings>
<!-- *** User Access Configuration *** -->
<!-- Allow user to change the panels layout {1: Yes} {0: No} -->
<add key="UserPermitions_AllowChangeLayout" value="1" />
<!-- Allow user to delete a company fro monitoring -->
<add key="UserPermitions_AllowUserDelete" value="1" />
<!-- *** Web Service configuration *** -->
<!-- Maximum responses from the search service -->
<add key="WebService_MaximumReturnsFromSearch" value="10" />
<!-- *** Allerts configuration *** -->
<!-- Send the alerts to the email writeen below -->
<add key="Alerts_SendTo" value="bruno.in.dk@gmail.com" />
<!-- Send an alert when user import more than the number bellow -->
<add key="Alerts_MaximumOnBatch" value="10" />
</appSettings>
所以,现在我这样称呼:
p.value = mySettings.GetSettings(
mySettings.SettingsType.WebService,
mySettings.SectionType.MaximumReturnsFromSearch);
希望能帮助有同样问题的人:)
答案 2 :(得分:1)
您也可以将配置放在设置文件中。在您的项目中,打开“属性”并转到“外观设置” like so
要访问代码中的值,请使用Properties.Settings.YourSettingName;
使用Properties.Settings.Default.Reload();
在运行时刷新设置