Asp.net core 响应正文上的字符无效

Asp.net core 响应正文上的字符无效,asp.net-core,asp.net-core-mvc,asp.net-core-1.0,Asp.net Core,Asp.net Core Mvc,Asp.net Core 1.0,我正在将现有的MVC5 json Web服务迁移到在完整框架(NET4.6.1)上运行的ASPNETCoreRC2 每个控制器都从_BaseController继承: public class _BaseController : Controller { public IActionResult Success(object data) { return Json({ IsSuccess = true, Data = data }); } public IActionResult E

我正在将现有的MVC5 json Web服务迁移到在完整框架(NET4.6.1)上运行的ASPNETCoreRC2

每个控制器都从_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 }); }
}
这是一个示例控制器:

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响应现在包含一些奇怪/无效的字符

来自Fiddler,这是原始(有效)响应:

{"isSuccess":true,"data":{"firstItem":"first","secondItem":"second","thirdItem":1}}
但RC2提供了如下无效响应(来自Fiddler的完整原始响应,与.NET winforms客户端接收的响应相同):


这让我快发疯了。有人知道这是否与Kestrel和IIS的集成有关吗?有什么线索吗?

是的,正如CodeCaster所评论的,都是关于chuncked的回应

我也会尝试修复客户端,但有一个解决方案

因此,如果有人再次遇到此问题,只需在
package.json
上添加对
Microsoft.AspNetCore.Buffering
的引用,并在
Startup.cs
上添加这一行:

app.UseResponseBuffering();

看起来像一个分块响应,其中有效负载实际上是990字节(3dehex)),最后一个
o
实际上是
0
(零)。这是消费应用程序的问题吗?是的,是0,我的错。这是一个问题,因为当我从响应流中读取时,这些字符就在那里,json不会解析。您显示的json真的是实际的负载吗?如果是这样的话,那么在计算块长度时可能会有一个错误(除了对这样的响应来说块是非常无用的)。与之前的想法相同,但使用了更大的json
SampleController
基本上创建这个对象(具体类)并以Json(数据)的形式返回。因此它是一个有效的分块响应,实际响应长度实际上是990字节(0x3DE十六进制)。没有虫子。问题在于您的客户端代码。看看你是否能修复你的客户,但不确定这是否有效。