C# 如何存储我的ASP.NET MVC站点';什么样的设置?
我有一个ASP.NET MVC站点,它由解决方案中的3个项目组成: DomainModel(类库-持有LINQ Repo)C# 如何存储我的ASP.NET MVC站点';什么样的设置?,c#,.net,asp.net-mvc,xml,C#,.net,Asp.net Mvc,Xml,我有一个ASP.NET MVC站点,它由解决方案中的3个项目组成: DomainModel(类库-持有LINQ Repo) DomainServices(类库-保存业务逻辑) WebUI(ASP.NET MVC站点) 我需要一个地方来存储我们的网站,可以通过XML配置一堆设置 这个项目应该投入哪个项目?有没有人举过一个例子,说明他们如何在这些不同的项目中加载并访问他们的设置 我是否在包含所有设置属性的某个C#类的构造函数中加载一次XML文件 有人能给我一些在XML文件中存储设置以用于多项目解决方
DomainServices(类库-保存业务逻辑)
WebUI(ASP.NET MVC站点) 我需要一个地方来存储我们的网站,可以通过XML配置一堆设置 这个项目应该投入哪个项目?有没有人举过一个例子,说明他们如何在这些不同的项目中加载并访问他们的设置 我是否在包含所有设置属性的某个C#类的构造函数中加载一次XML文件
有人能给我一些在XML文件中存储设置以用于多项目解决方案的示例和提示吗?我会将其存储在一个带有接口的新服务中 我要做的是让一个类具有所有属性/设置。它还将管理XML文件
反转控制容器允许您使用依赖项注入将它们注入到其他类中。设置通常存储在web.config中。所有程序集都可以访问这些设置
ConfigurationManager.AppSettings["key"]
您需要添加对System.configuration.dll的引用我同意Mathias使用框架提供的默认方式。但是,您仍然可以(should,IMHO)创建某种包装类,可能是在接口后面,以便在单元测试中进行模拟,例如:
class MyAppSettings
{
public int SomeSetting
{
get
{
return Convert.ToInt32(ConfigurationManager.AppSettings["SomeSetting"]);
}
}
}
在类库中定义共享属性以保存应用程序设置(Specialized.NameValueCollection的实例)。然后在站点逻辑中,从global.asax的Application_Start sub中的web.config将此新属性设置为ASP.NET设置
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
DomainModel.Common.AppSettings = ConfigurationManager.AppSettings
End Sub
这样,您可以从类库项目中获得设置。
而不是使用AppSt设置,它只是键值对的集合,考虑使用配置节或IConfigurationSectionHandler
定义自己的配置结构。 这样,您就获得了包装器类的所有安全性,并且它不会使您的应用程序设置变得杂乱无章(并且在某个地方为您的使用进行了很好的定义) 更好的方法是,定义自己的XML模式,并使用XmlSerialization/Deserialization将此文件存储在web.config之外,监听其更改(将其绑定到缓存,无论什么) 如果这样做,则不需要修改web.config以获得更改,因此不需要重新启动web应用程序,从而在过程中丢失会话/缓存写得好的无状态web应用程序不应该关心丢失会话/缓存,但总有人…:) 我在考虑把它变成一个静态类,考虑到我不需要它的多个实例。但不确定。默认情况下,一个合适的IoC容器只会构造一个。