首页 > 解决方案 > Test.Program 的类型初始化程序引发异常

问题描述

在一个 .net5.0 项目中,我试图从 txt 文件中读取所有邮件,它在半小时前工作,但是当我为了更好地理解而更改了一些名称时,它突然停止工作。我从 app.config 文件中读取了 txt 文件位置,这是配置:[![在此处输入图像描述][1]][1]

我阅读的关键是 LokacijaExportanihMailAdresa。这是 app.config 中的关键;

<add key="LokacijaExportanihMailAdresa" value="txt_docs\Mailovi.txt"

这是我试图读取 txt 文件的代码:

class Program
    {
        public static int i = 0;
        public static Timer aTimer = new Timer(Int32.Parse(ConfigurationManager.AppSettings.Get("VrijemeUMiliSekundama")));
        public static string lokacijaMailova = ConfigurationManager.AppSettings.Get("LokacijaExportanihMailAdresa");
        public static string posiljatelj = ConfigurationManager.AppSettings.Get("Posiljatelj");
        public static string subjekt = ConfigurationManager.AppSettings.Get("Predmet");
        public static string putanjaDoPoruke = ConfigurationManager.AppSettings.Get("Poruka");
        public static int imaPrivitak = Int32.Parse(ConfigurationManager.AppSettings.Get("ImaAttachment"));
        public static string putanjaDoPrivitka = ConfigurationManager.AppSettings.Get("Privitak");
        public static string smtpServer = ConfigurationManager.AppSettings.Get("SmtpServer");

    static void Main(string[] args)
    {
        var logger = NLog.LogManager.GetCurrentClassLogger();

        logger.Info("Aplikacija je pokrenuta");

        var mailovi = File.ReadAllLines(lokacijaMailova);

        aTimer.Elapsed += (sender, e) => OnTimedEvent(sender, e, logger, mailovi, i++);

        aTimer.Start();
        Console.ReadKey();
    }

}

这是错误:

2021-11-09 13:23:01.6441|Error|MailServis.Program|System.TypeInitializationException: The type initializer for 'MailServis.Program' threw an exception.
 ---> System.ArgumentNullException: Value cannot be null. (Parameter 's')
   at System.Int32.Parse(String s)
   at MailServis.Program..cctor() in C:\Users\djcumbaj\source\repos\MailServis\Program.cs:line 21
   --- End of inner exception stack trace ---
   at MailServis.Program.Main(String[] args) in C:\Users\djcumbaj\source\repos\MailServis\Program.cs:line 32 | 

但是在我将路径直接放在 File.ReadAllLines 中之后,它会读取文件,但接下来发生的事情当我的意思是相同时,Timer 会抛出相同的异常,它是完全相同的。先感谢您。

标签: c#.net-5

解决方案


你打电话ConfigurationManager.AppSettings.Get("ImaAttachment"),但你有ImaPrivitak在appSettings。


推荐阅读