【问题标题】:Azure Web Jobs cannot read csv properlyAzure Web Jobs 无法正确读取 csv
【发布时间】:2019-02-20 20:03:32
【问题描述】:

我正在使用最新版本的 CsvHelper 库,但 Azure WebJob 无法读取我的 csv 文件。

它说日期时间格式无效。虽然我 101% 确信我的 csv 具有正确的 DateTime 格式。

我相信 CsvHelper 会导致问题,但我真的不知道..

如果需要更多信息,请告诉我。

【问题讨论】:

  • 您可以远程调试您的网络作业并检查您从 csv 中得到了什么以及您的数据格式是否正确。
  • @GeorgeChen 如何调试 webjob 代码?
  • 1.在 VS 中,转到 Cloud Explorer(确保您拥有最新的 Azure 工具) 2.在 App Service 下找到您的 Web App 3.在它下,在 WebJobs 下找到您的 WebJob 4.右键单击它并选择附加调试器

标签: azure csv web-applications azure-webjobs csvhelper


【解决方案1】:

对于此类问题,如果我们没有可以重现该问题的样本,我们将很难回答。所以在这里我只分享一个自己解决问题的有效方法。

首先,这个问题不是web作业引起的,所以你应该先在本地调试它。

1,创建一个简单的控制台应用程序进行测试。

2、下载CsvHelper库的源代码,在VS的同一个解决方案中添加源项目,然后引用CsvHelper项目如下:

3,在您的测试应用程序中,输入一些与您在网络作业中使用的功能相同的代码。以下是我用于演示的内容。 Foo 类包含一个 DateTime 属性:

class Program
{
    static void Main(string[] args)
    {
        using (var reader = new StreamReader(@"C:\Users\toml\Desktop\test.csv"))
        using (var csv = new CsvReader(reader))
        {
            csv.Configuration.BadDataFound = null;
            var records = csv.GetRecords<Foo>();

            foreach (var item in records)
            {
                Console.WriteLine(item.Time);
            }
        }
        Console.ReadKey();
    }
}
public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Time { get; set; }
}

4,根据堆栈跟踪,错误发生在TypeConversion文件夹-> DateTimeConverter.cs文件中的ConvertFromString方法上。 打开此文件并设置断点,如下所示:

最后一个抛出异常的方法是DateTime.Parse( text, formatProvider, dateTimeStyle )。 现在运行项目并检查每个参数,尤其是“文本”是否是预期的。

它将提供更多信息供您调试。

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多