首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将单字节添加到响应中时,ASP.NET WebAPI输出速度会减慢40倍

将单字节添加到响应中时,ASP.NET WebAPI输出速度会减慢40倍
EN

Stack Overflow用户
提问于 2016-02-15 23:58:59
回答 2查看 220关注 0票数 16

我有一个简单的操作方法,如下所示:

代码语言:javascript
复制
public class TestApiController : ApiController
{
    [Route("api/string"), HttpGet]
    public string GetString(int length)
    {
         return new string('x', length);
    }
}

响应时间(由Fiddler观察到):

代码语言:javascript
复制
GET /api/string?length=1186
  0.008
  0.007
  0.007
  ...

GET /api/string?length=1187
  0.208
  0.212
  0.205
  ...

也就是说,通过向响应添加单个字节,处理时间增加了40倍。

这种行为是绝对一致的,我在Visual Studio的Web服务器和IIS8.5中都观察到了它(但是,具体的响应大小阈值略有不同)。

它到底为什么会这样呢?

编辑:在我的案例中,ESET NOD32 antivirus检查协议是罪魁祸首。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-25 19:58:55

AntiVirus软件正在扫描从您的电脑传入/传出的数据。

他们被编程为知道如何理解标准类型的数据,而不是在简单的strings ints datatable上进行扫描。当你直接操作这些数据时,你是在告诉给定的杀毒软件“嗨,我很奇怪,请检查我”,杀毒“规则”是隐藏的,但我知道肯定有一些“大小”,“格式”等,这取决于软件。在您的情况下,它的速度较慢,它必须执行额外的扫描作业,以确保您的安全。在运行定制应用程序的Intranet解决方案中,这是一个非常众所周知的问题,这些应用程序正在发送一些定制数据。

票数 2
EN

Stack Overflow用户

发布于 2016-02-25 14:42:16

很可能您正在传递网络的MTU,数据包在通过网络时变得支离破碎。典型网络上的数据包最大值不超过1500个,超过此值后,它们将被拆分。

尝试运行Wireshark,看看这是否可以帮助您追踪问题。您还可以尝试在您的网络适配器上启用巨型帧,看看这是否有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35413752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档