2016-06-28 2 views
1

Я переношу существующий MVC5 json webservice в AspNet Core RC2, работающий на полной платформе (NET 4.6.1).Недопустимые символы в теле ответа

Каждый контроллер наследует от _BaseController:

public class _BaseController : Controller 
{ 
    public IActionResult Success(object data) { return Json({ IsSuccess = true, Data = data }); } 
    public IActionResult Error(string message) { return Json({ IsSuccess = false, Message = message }); } 
} 

Это контроллер образца:

public class SampleController : _BaseController 
{ 
    public IActionResult Something() { return Success(new { FirstItem = "First", SecondItem = "Second", ThirdItem = 1 }); } 
} 

На RC1 это работало нормально. Ответ был прекрасен.

После обновления до RC2 ответ JSON теперь содержит некоторые странные/недопустимые символы.

С Скрипач, это оригинал (действительный) ответ:

{"isSuccess":true,"data":{"firstItem":"first","secondItem":"second","thirdItem":1}} 

Но RC2 обеспечивает неверный ответ, как это (полный сырой ответ от Скрипач, который так же, как получено клиентом .NET WinForms):

HTTP/1.1 200 OK 
Transfer-Encoding: chunked 
Content-Type: application/json; charset=utf-8 
Server: Kestrel 
X-Powered-By: ASP.NET 
Date: Tue, 28 Jun 2016 20:38:55 GMT 

3de 
{"sucesso":true,"dados":{"codigo":1,"dataUltimaAtualizacao":"2016-06-27T00:00:00","horaUltimaAtualizacao":"17:18:06.8099844","offsetHoraUltimaAtualizacao":-180,"cnpj":"23303829000169","razaoSocial":"NACIONAL SOFT LTDA","nomeFantasia":"NACIONAL SOFT","tipoEstabelecimento":"MATRIZ","inicioAtividade":"1987-05-13T00:00:00","atividadePrimaria":"62.03-1-00 - Desenvolvimento e licenciamento de programas de computador não-customizáveis","atividadesSecundarias":"62.02-3-00 - Desenvolvimento e licenciamento de programas de computador customizáveis","naturezaJuridica":"206-2 - SOCIEDADE EMPRESARIA LIMITADA","logradouro":"R HORTENCIA","numero":"591","complemento":"CONJUNTO 01","bairro":"ESPLANADA","municipio":"BELO HORIZONTE","uf":"MG","cep":"30280250","enderecoEletronico":"","telefone":"","enteFederativoResponsavel":"*****","situacaoCadastral":"ATIVA","dataSituacaoCadastral":"2005-11-03T00:00:00","motivoSituacaoCadastral":"","situacaoEspecial":"********","dataSituacaoEspecial":null}} 
0 

Это сводит меня с ума здесь. Кто-нибудь знает, связано ли это с интеграцией между Kestrel и IIS? Любая подсказка вообще?

+0

Похож фрагментированный ответ, где полезная нагрузка фактически 990 байт (3DE шестигранный)), а последний 'o' будет фактически' 0' (ноль). Это проблема для приложения-потребителя? – CodeCaster

+0

Да, это 0, мой плохой. Это проблема, потому что, когда я читаю из потока ответов, эти символы есть, и json не будет разбираться. –

+0

Разве это JSON вы действительно показываете полезную нагрузку? Если это так, то может возникнуть ошибка в том, как вычисляется длина блока (кроме того, что для такого ответа довольно бесполезно). – CodeCaster

ответ

1

Да, это все о chuncked ответе, когда CodeCaster прокомментировал.

Я попробую и исправить клиента, но this previous question имеет исправление для этого.

Так что, если кто-то снова впадает в это, просто добавьте ссылку на Microsoft.AspNetCore.Buffering на package.json и эту линию на Startup.cs:

app.UseResponseBuffering(); 
Смежные вопросы