2016-06-28 18 views
1

既存のMVC5 json webserviceを、フルフレームワーク(NET 4.6.1)で動作するAspNet Core RC2に移行します。応答ボディに無効な文字があります

すべてのコントローラは_BaseControllerから継承:

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

がRC1では、これがうまく働いた:

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 }); } 
} 

これはサンプルコントローラです。応答はちょうど良かった。

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

CodeCasterがコメントしたように、うん、ちょっとチャンクレスな反応です。

クライアントを修復しようとしますが、this previous questionにはこの問題が修正されています。

誰もが、再びこのに実行されるのであれば、単にStartup.cspackage.jsonMicrosoft.AspNetCore.Bufferingを参照すると、次の行を追加します。

app.UseResponseBuffering(); 
関連する問題