Streamreader не может прочитать файл с ошибкой 500 сервера при чтении большого файла JSON

#c# #asp.net-mvc #iis #file-io #streamreader

#c# #asp.net-mvc #iis #файл-ввод-вывод #потоковый считыватель

Вопрос:

Я пытаюсь прочитать файл json большого размера (2,3 Мб) и вернуть его в виде json в Интернете.

 string path = AppDomain.CurrentDomain.BaseDirectory   @"GeoJson/MaliCommunes.geo.json"; string json;  using (StreamReader sr = new StreamReader(path, Encoding.GetEncoding("iso-8859-1"))) {  json = sr.ReadToEnd(); } JavaScriptSerializer JsonSerializer = new JavaScriptSerializer();   object data = JsonSerializer.DeserializeObject(json);  return new JsonResult() {  Data = data,  ContentType = "application/json",  ContentEncoding = Encoding.UTF8,  JsonRequestBehavior = JsonRequestBehavior.AllowGet,  MaxJsonLength = Int32.MaxValue };  

Это работает на локальном хосте, но когда я загружаю его на сервер, я получаю сообщение об ошибке 500 «Файл не найден» в этой строке using (StreamReader sr = new StreamReader(path, Encoding.GetEncoding("iso-8859-1")))

Я попробовал следующее в веб-конфигурации:

  1. Добавьте maxRequestLength в HttpRuntime
  2. Добавьте maxJsonLength для JSONSerialization

Я предполагаю, что либо файл обрезан (в нем есть символы с французским акцентом), либо файл слишком большой и вызывает проблемы на сервере.

Комментарии:

1. Похоже на ваш домен приложения. CurrentDomain.BaseDirectory работает на сервере не так, как вы ожидаете?

2. Это так, он заменил этот файл на файл geojson меньшего размера, и он работал без каких-либо проблем.

3. У вас есть ограничение памяти на сервере?

4. Итак, у вас уже есть данные json. Вы тратите усилия на то, чтобы распаковать это в объект, только для того, чтобы снова его ресериализовать? Просто подайте файл.

5. это не решает мою проблему, так как мне все равно придется читать файл с помощью какого-то считывателя.

Ответ №1:

  1. Проверьте имя большого файла json более тщательно. у него может быть невидимое расширение. Проверьте путь, попытавшись открыть файл json вручную. Просто введите полный путь с помощью проводника Windows.
  2. Проверьте разрешения на вкладке безопасность большого файла json и сравните их с разрешениями файла json, который работает без каких-либо проблем.

Ответ №2:

Я убрал французский акцент, и это сработало