[英]ASP.NET MVC application getting binding redirect settings from app.config, not web.config
[英]Strongly typed Settings class in a services library getting settings from web.config in mvc project
我有多个项目的解决方案。 其中之一是Services项目,我的大多数后端代码都位于其中,因此,大多数这些服务的设置都位于其app.config文件中。
我创建了一个类来访问所有这些设置,因此可以在Services项目之外使用它们。
public static class ServicesAppSettings
{
/// <summary>
/// Simple App Settings classes for strong typing
/// When creating a new class please ENSURE THAT THE PROPERTY NAME EXACTLY MATCHES THE APPSETTINGS KEY!
/// </summary>
public static class SmsSettings
{
public static string SmsProvider => ConfigurationManager.AppSettings["SmsProvider"];
public static string SmsAccountId => ConfigurationManager.AppSettings["SmsAccountId"];
public static string SmsPassword => ConfigurationManager.AppSettings["SmsAccountPassword"];
public static string SmsFromPhone => ConfigurationManager.AppSettings["SmsFromPhone"];
}
public static class EmailSettings
{
public static string EmailProvider => ConfigurationManager.AppSettings["EmailProvider"];
public static string EmailProviderHost => ConfigurationManager.AppSettings["EmailProviderHost"];
public static string EmailAccount => ConfigurationManager.AppSettings["EmailAccount"];
public static string EmailAccountPassword => ConfigurationManager.AppSettings["EmailAccountPassword"];
public static string GetEmailAddressFromApplication()
{
return string.Format(EmailAccount + "@" + EmailProvider);
}
}
public static class UserIcons
{
public static string MaleUserIconSource => ConfigurationManager.AppSettings["MaleUserIcon"];
public static string FemaleUserIconSource => ConfigurationManager.AppSettings["FemaleUserIcon"];
}
}
并且当设置不在WEB.CONFIG文件中时,它的工作原理非常好,除了该设置。 为什么这是从mvc的web.config文件而不是其自己的库app.config文件提取的图形。 相信我,情况就是如此。 如果我从web.config中删除一个设置,然后尝试在测试中访问它,则它为null,如果我将其放回web.config中,则它可以工作。
有人知道为什么吗? 您可以为ConfigurationManager指定要从中检索文件的名称吗?
发生这种情况是因为实际上只能访问一个配置文件-可执行项目的config。 这就是为什么在mvc应用程序中可以从可执行mvc应用程序的web.config
中读取设置的原因。 如果您有服务应用程序(ms服务),它将是启动服务的app.config
。
据我所知,您无法从另一个配置文件中读取设置。
一种可能的解决方案是将您的自定义设置存储在.xml
文件中并进行读取。 如果要在运行时更改自定义设置,这也很有用。
另一个(如果您不想弄乱appSettings
部分中的设置)是创建自定义配置部分并将其用于设置
希望能有所帮助
Web.config是放置设置的地方。 .net Web解决方案中的dll将使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.