Asp.net core 如何保护ASPNet内核中劫持json的结果

Asp.net core 如何保护ASPNet内核中劫持json的结果,asp.net-core,json.net,Asp.net Core,Json.net,我需要保护我的json响应不被aspnet内核劫持。我以前在beta 8中有一个有效的解决方案,但我无法在1.1中使其正常工作 我想做的是检查Json响应是否是可枚举的。如果是,我将枚举项包装在一个对象中 这就是我在JsonOutputFormatter重写中所做的: public override Task WriteResponseBodyAsync(OutputFormatterContext context) { if (context.Object is IEnumerable

我需要保护我的json响应不被aspnet内核劫持。我以前在beta 8中有一个有效的解决方案,但我无法在1.1中使其正常工作

我想做的是检查Json响应是否是可枚举的。如果是,我将枚举项包装在一个对象中

这就是我在JsonOutputFormatter重写中所做的:

public override Task WriteResponseBodyAsync(OutputFormatterContext context)
{
    if (context.Object is IEnumerable)
    {
        context.Object = new { result = context.Object };
    }
    return base.WriteResponseBodyAsync(context);
}
由于框架中的更改,这将不再有效


有人对如何将可枚举响应包装到对象中以避免劫持有什么好的建议吗?

只是好奇你所说的劫持是什么意思,以及这样包装可枚举响应如何防止劫持?@JoeAudette我的假设是他指的是这个黑客:谢谢!非常有趣,很高兴它在现代浏览器中不起作用,但我想缓解这种情况是有意义的it@Steve:这不是真的很旧吗?正如链接文章中所述,它只适用于非常旧的浏览器吗?FF2?谁在使用它或IE 5.5?看看它的源代码,我发现它的WriteResponseBodyAsync有两个参数,它继承了一个有一个参数的方法,但它是密封的,所以你不能覆盖那个参数。我认为您需要将Encoding selectedEncoding添加到重写的方法签名中。我只是好奇,劫持是什么意思,这样包装枚举是如何防止的?@JoeAudette我的假设是,他指的是这个黑客:谢谢!非常有趣,很高兴它在现代浏览器中不起作用,但我想缓解这种情况是有意义的it@Steve:这不是真的很旧吗?正如链接文章中所述,它只适用于非常旧的浏览器吗?FF2?谁在使用它或IE 5.5?看看它的源代码,我发现它的WriteResponseBodyAsync有两个参数,它继承了一个有一个参数的方法,但它是密封的,所以你不能覆盖那个参数。我认为您需要将Encoding selectedEncoding添加到覆盖的方法签名中