繁体   English   中英

服务库中的强类型设置类,可从mvc项目中的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM