处理时IIS不发布文件

时间:2016-03-02 15:53:52

标签: c# asp.net-mvc-4 iis

在ASP.Net MVC4应用程序中,我使用以下代码处理Go To Webinar Attendees报告(CSV格式)。

由于某种原因,IIS正在释放正在加载的文件,并且在尝试处理其他文件时会导致问题。

你在这里看到了什么异常吗?

CSVHelper(CsvReader)来自https://joshclose.github.io/CsvHelper/

public AttendeesData GetRecords(string filename, string webinarKey)
{
    StreamReader sr = new StreamReader(Server.MapPath(filename));
    CsvReader csvread = new CsvReader(sr);
    csvread.Configuration.HasHeaderRecord = false;
    List<AttendeeRecord> record = csvread.GetRecords<AttendeeRecord>().ToList();
    record.RemoveRange(0, 7);
    AttendeesData attdata = new AttendeesData();
    attdata.Attendees = new List<Attendee>();
    foreach (var rec in record) 
    {
        Attendee aa = new Attendee();
        aa.Webinarkey = webinarKey;
        aa.FullName = String.Concat(rec.First_Name, " ", rec.Last_Name);
        aa.AttendedWebinar = 0;
        aa.Email = rec.Email_Address;
        aa.JoinTime = rec.Join_Time.Replace(" CST", "");
        aa.LeaveTime = rec.Leave_Time.Replace(" CST", "");
        aa.TimeInSession = rec.Time_in_Session.Replace("hour", "hr").Replace("minute", "min");
        aa.Makeup = 0;
        aa.RegistrantKey = Registrants.Where(x => x.email == rec.Email_Address).FirstOrDefault().registrantKey;

        List<string> firstPolls = new List<string>()
        {
           rec.Poll_1.Trim(), rec.Poll_2.Trim(),rec.Poll_3.Trim(),rec.Poll_4.Trim()
        };
        int pass1 = firstPolls.Count(x => x != "");

        List<string> secondPolls = new List<string>()
        {
           rec.Poll_5.Trim(), rec.Poll_6.Trim(),rec.Poll_7.Trim(),rec.Poll_8.Trim()
        };
        int pass2 = secondPolls.Count(x => x != "");

        aa.FirstPollCount = pass1;
        aa.SecondPollCount = pass2;

        if (aa.TimeInSession != "")
        {
            aa.AttendedWebinar = 1;
        }
        if (aa.FirstPollCount == 0 || aa.SecondPollCount == 0)
        {
            aa.AttendedWebinar = 0;
        }

        attdata.Attendees.Add(aa);
        attendeeToDB(aa); // adds to Oracle DB using EF6.
    }
    // Should I call csvread.Dispose() here?
    sr.Close();
    return attdata;
}

2 个答案:

答案 0 :(得分:1)

是。你也必须处置对象。

services:
  add_page:
    class: BackendContent\Form\PageType
    arguments: [ "add" ]
    tags:
      - { name: form.type }
  edit_page:
    class: BackendContent\Form\PageType
    arguments: [ "edit" ]
    tags:
      - { name: form.type }

使用使用关键字的更好策略。

答案 1 :(得分:1)

您应该为您的精简版和作者使用。

您应遵循一些命名约定(列表始终包含多个条目,将记录重命名为记录)

您应该使用明确的名称(不是aa)