У меня есть WebAPI (не знаю, какая версия, но она была создана в VS2017), которая получает строку Json и привязывает ее к модели в контроллере. Большую часть времени это работает просто отлично. Иногда он выдает исключение при первом обращении к экземпляру класса. Ясно, что подпрограммы привязки терпят неудачу, но сообщение об исключении не помогает: ссылка на объект не установлена для экземпляра объекта. Я предполагаю, что механизм связывания не работает и даже не создает пустой экземпляр моего объекта.
Я записываю строку Json перед вызовом API, чтобы проверить строку на наличие проблем. Я определил, что определенные символы Unicode (такие как Trademark TM) могут вызвать сбой, поэтому я управляю ими.
Но у меня есть пара последних строк Json, которые выдают исключение, и я не могу понять, почему. Там нет символов Unicode, которые я могу найти. Теперь мои пользователи спрашивают, почему этот определенный стиль работы терпит неудачу.
Кажется, что после того, как InputStream прочитан внутренними процедурами привязки MVC, он никогда не сможет быть прочитан снова. Хитрость:
HttpContext.Current.Request.InputStream.Position = 0;
string streamresult = new System.IO.StreamReader(HttpContext.Current.Request.GetBufferedInputStream()).ReadToEnd();
выдает свое собственное исключение, говоря, что вызов был сделан до того, как "внутреннее хранилище было заполнено вызывающей стороной HttpRequest.GetBufferedInputStream".
- Есть ли способ заглянуть внутрь скоросшивателя и посмотреть, что он задыхается
на?
- или есть ли способ получить лучшее сообщение об исключении?
- или для захвата и записи входящего потока данных?