#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")))
Я попробовал следующее в веб-конфигурации:
- Добавьте maxRequestLength в HttpRuntime
- Добавьте maxJsonLength для JSONSerialization
Я предполагаю, что либо файл обрезан (в нем есть символы с французским акцентом), либо файл слишком большой и вызывает проблемы на сервере.
Комментарии:
1. Похоже на ваш домен приложения. CurrentDomain.BaseDirectory работает на сервере не так, как вы ожидаете?
2. Это так, он заменил этот файл на файл geojson меньшего размера, и он работал без каких-либо проблем.
3. У вас есть ограничение памяти на сервере?
4. Итак, у вас уже есть данные json. Вы тратите усилия на то, чтобы распаковать это в объект, только для того, чтобы снова его ресериализовать? Просто подайте файл.
5. это не решает мою проблему, так как мне все равно придется читать файл с помощью какого-то считывателя.
Ответ №1:
- Проверьте имя большого файла json более тщательно. у него может быть невидимое расширение. Проверьте путь, попытавшись открыть файл json вручную. Просто введите полный путь с помощью проводника Windows.
- Проверьте разрешения на вкладке безопасность большого файла json и сравните их с разрешениями файла json, который работает без каких-либо проблем.
Ответ №2:
Я убрал французский акцент, и это сработало