C# 来自MVC控制器的缓慢响应

C# 来自MVC控制器的缓慢响应,c#,json,asp.net-mvc,C#,Json,Asp.net Mvc,我有个奇怪的问题 从一个控制器我确实收到非常慢的响应。发生了什么事。 我确实有一个从这个控制器到我们后端软件的动态Web服务调用。来自后端的响应大约在30-500毫秒内处理。 序列化过程约为0ms-10ms 当控制器使用24K woth JsonData将数据返回到客户端(浏览器)时,服务器大约需要2.8秒和250毫秒来呈现响应,如果服务器返回ie 300K json数据,则仅需要500毫秒来响应,1秒来呈现。。我的方法 到目前为止,我尝试将序列化从Json更改为JsonNet以计划字符串响应,

我有个奇怪的问题

从一个控制器我确实收到非常慢的响应。发生了什么事。 我确实有一个从这个控制器到我们后端软件的动态Web服务调用。来自后端的响应大约在30-500毫秒内处理。 序列化过程约为0ms-10ms

当控制器使用24K woth JsonData将数据返回到客户端(浏览器)时,服务器大约需要2.8秒和250毫秒来呈现响应,如果服务器返回ie 300K json数据,则仅需要500毫秒来响应,1秒来呈现。。我的方法

到目前为止,我尝试将序列化从Json更改为JsonNet以计划字符串响应,但都是一样的

    [HttpPost]
    public string RetriveMultiple(RequestParams model)
    {
        Stopwatch st = new Stopwatch();
        st.Start();

        var def = UI.GetDefinitionFor(model.ModuleName);

        var service = DynamicServiceProxy.DynamicServiceHelper.CreateWebService(model.RequestedEntity);

        ArrayList filters = new ArrayList();

        if (null != model.RequestFilters)
            foreach (var f in model.RequestFilters)
            {
                filters.Add(service.CreateFilter(f.Field, f.Criteria));
            }

        dynamic response = new string[0];
        try
        {
            response = service.ReadMultiple(filters, model.PageKey, model.PageSize != null ? (int)model.PageSize : 30);
        }
        catch
        {
            service = DynamicServiceProxy.DynamicServiceHelper.CreateWebService(model.RequestedEntity, true);
            response = service.ReadMultiple(filters, model.PageKey, model.PageSize != null ? (int)model.PageSize : 30);
        }

        st.Stop();
        LogHelper.Info<EntityServiceSurfaceController>(() => {
            return string.Concat("Search time ",  st.Elapsed.Milliseconds, "ms, row count ", response.Length );
        });

        st.Reset();
        st.Start();
        var r = Newtonsoft.Json.JsonConvert.SerializeObject(response);
        st.Stop();
        LogHelper.Info<EntityServiceSurfaceController>(() => {
            return string.Concat("Serialisation time ", st.Elapsed.Milliseconds, "ms, row count ", response.Length);
        });


        return r;
        //return new JsonNetResult
        //{
        //    Data = r
        //};
    }
}


可能是ASP.NET筛选器吗?这些方法在操作之前和之后运行,并实现安全性和日志记录等功能

检查全局注册的筛选器,通常在
App\u Start\FilterConfig.cs

        filters.Add(new HandleErrorAttribute());
        filters.Add(new DisallowJsonCachingAttribute());
        filters.Add(new ApplyJsonCacheControlAttribute());
此外,检查控制器是否应用了任何可疑过滤器


我假设这个方法很慢?还有其他工作正常的吗?

dynamic response=new string[0]中删除动态Dos没有帮助。动态对象的序列化时间约为0-10ms。请将秒表放在不同的位置,直到您确认哪个位实际占用的时间最多,然后编辑您的帖子。我确实更新了may的问题。您为什么不直接配置应用程序?加载高负载,然后暂停调试器10次。它通常会在花费时间最多的地方停止。为什么有两个答案?你真的应该把这个加到你原来的答案上。就这一个来说,其他的一切都很快。如果我加载一个更大的数据集,它会更快地呈现,这会有一个难题。@Liam这是两种截然不同的方法,一种可能是对的,另一种可能是错的。两种不同的讨论思路。因此,有两个答案。这似乎适合作为评论而不是答案。
        filters.Add(new HandleErrorAttribute());
        filters.Add(new DisallowJsonCachingAttribute());
        filters.Add(new ApplyJsonCacheControlAttribute());