如果ASP.NET应用程序使用许多DLL,那么保持每个dll的配置分离的最
为每个dll创建设置后,将生成.dll.config文件.如果该dll是asp.net应用程序的一部分,如何为每个dll分别保持这些配置,并且不将它们合并到web.config中?
例: GMailSender gms = new GMailSender(); gms.To = "myfriend@yahoo.com"; gms.Subject = "System.Configuration dilemma"; gms.Body = "Can anyone help me with this question ?"; gms.Send(); 考虑GMailSender在GMailSender.dll中,它的配置文件是GMailSender.dll.config,其中包含GMail帐户的用户名和密码. 我希望这个DLL使用自身的配置文件(在同一目录中的dll和config,即在ASP.NET应用程序的Bin文件夹中)或桌面应用程序旁边.通过这种方式,GMailSender独立于谁正在使用他来检索它的配置(当前已加载此DLL的AppDomain). 我想要这个而不重建轮子(没有自定义配置类).我猜它可能与System.Configuration,但这个命名空间可能是最糟糕的.NET设计! 请不要告诉你为什么设计这样…… 这是一个基于插件的设计,最后MEF现在在.NET 4.0中做了某种,但是部件配置存在同样的问题.至少MEF我不再需要争论基于插件的设计优势了. 解决方法
您可以使用自定义配置部分实现所需.此
MSDN article提供了有关如何实现此类配置节的一些详细信息和示例.
如果您需要简单的键/值配置,例如appSettings部分,那么创建自定义配置部分非常简单. 您需要做的第一件事是在web.config中定义您的配置部分: <configSections> <section name="GmailSettings" restartOnExternalChanges="true" type="System.Configuration.NameValueFileSectionHandler" /> </configSections> 现在,在web.config文件中,您可以声明GmailSettings部分并设置您将用于该设置的外部配置文件的位置: <GmailSettings configSource="GmailSettings.config"></GmailSettings> configSource指定用于定义GmailSettings部分的外部配置文件的名称和位置.请注意定义节时使用的restartOnExternalChanges属性.如果您希望在修改GmailSettings.config文件时自动重新启动应用程序(就像修改web.config文件时那样),请将其设置为true. 以下是如何实施GmailSettings.config文件的示例: <?xml version="1.0"?> <GmailSettings> <add key="userName" value="blabla"/> <add key="password" value="moreBla"/> </GmailSettings> 您可以使用ConfigurationManager.GetSection()方法或通过实现如下所示的帮助程序类来访问GmailSettings中的设置: public class GmailSettings { private static readonly GmailSettings _instance = new GmailSettings(); private NameValueCollection _settings = ConfigurationManager.GetSection("GmailSettings") as NameValueCollection; public static GmailSettings Instance { get { return _instance; } } public string this[string key] { get { return _settings[key]; } } } 现在可以像GmailSettings.Instance [“userName”]一样访问这些设置. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何更改MVC Core ValidationSummary的默认
- asp.net – 使用redirectMode =“ResponseRewrite”的custo
- 如何解决.Net中冲突的程序集?
- 验证 – ASP.Net MVC3电子邮件/电话数据注释不起作用
- asp.net-mvc-4 – 什么是antlr3,为什么默认情况下在VS2012
- 如何在asp.net mvc 3中禁用浏览器缓存?
- asp.net – 查询字符串:查询字符串是否包含也包含查询字符
- asp.net-mvc – 实体框架:已经有一个与此命令关联的开放Da
- asp.net-mvc – ModelState.IsValid是假的 – 但是哪一个 –
- asp.net-mvc-5 – 如何在服务器上保存Rotativa PDF
- WPF和MVC是相同的概念吗?
- .net core 基于 IHostedService 实现定时任务
- asp.net – MVC 6 WebAPI返回序列化的HttpRespon
- asp.net – 如何在Quartz.Net中处理应用程序关闭
- asp.net-mvc – 未找到路径’/ Home’的控制器或
- asp.net-mvc – MVC / Razor – 当有下列括号时,
- 来自asp.net会员身份验证的userid?
- asp.net-mvc – MVC4:禁用某些控制器上的移动视
- asp.net-mvc-4 – 如何使用ASP.NET MVC在Kendo U
- asp.net-mvc-3 – 将AuthorizeAttribute应用于控