2014-02-20 1 views
0

Это странно ... У меня есть файл CSV на сервере и сделать его доступным для пользователей через код ниже. Как правило, набор результаты являются правильными, за исключением того, что он всегда опускает последнее поле последней записи:System.Web.HttpContext.Current.Response анализирует поле

Co Имя, процесс Дата, Id Сотрудник, Фамилия, Имя, Касты Auth, ENTERED_HRS, труд Тип

Temp, 2014-02-21, CONTRACTOR0001, Dahlenburg, Эрик, 131137057134,5,0

Temp, 2014-02-21, CONTRACTOR0001, Dahlenburg, Эрик, 1411310002,8,0

Temp, 2014 -02-21, CONTRACTOR0001, Dahlenburg, Eric, 1411320015,6,69,0

Temp, 2014- 02-21, CONTRACTOR0001, Dahlenburg, Eric, 1413500001105,6

Отметьте, что нет «, 0» в конце последней записи? В Visual Studios он отлично работает, но на моем сервере разработки он опускает эту последнюю часть.

Я проверил, что исходный CSV-файл имеет все поля данных. Я пробовал разные места пути для файла CSV, но никаких изменений. Не могу понять, почему он работает на Visual Studios, а не на сервере.

addendum: Я не знаю, имеет ли значение это значение, но исходный файл находится в виртуальном каталоге (а не физическом) на сервере. Есть идеи???

  // Causes Save As Dialog box to appear for user. 
      String FileName = fileName; 
      String FilePath = strFilePath; 

      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 
      response.ContentType = "text/csv"; 
      response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
      response.WriteFile(FilePath + FileName); 
      response.Flush(); 
      response.Close(); 
      // response.End(); // Same as response.TransmitFile(), but causes an exception because it raises the EndRequest event. 

ответ

0

После многих проб и ошибок, я обнаружил, что я могу заставить его работать, если я использую тип содержимого:

  response.ContentType = "application/csv"; 

Не знаю, почему это отличается от текста/CSV, но теперь работает. Кроме того, Вы можете использовать

  response.ContentType = "application/vnd.ms-excel"; 

Как хорошо, но его будет подсказывать пользователю, что файл не находится в нужном формате, вы хотите открыть в любом случае.

Eric

Смежные вопросы