代码之家  ›  专栏  ›  技术社区  ›  mko

同一控制器下具有相同操作方法的asp.net web api中的性能问题

  •  0
  • mko  · 技术社区  · 6 年前

    在同一个控制器下,我有两个动作方法,一个在几毫秒内执行,另一个执行大约需要1.5秒。两个方法中的代码是相同的。

    我从未见过这样的事情,真的不知道如何解决这个问题。

     [RoutePrefix("test/v420")]
        public class SomeController : ApiController
        {
            ISomeIndex someIndex;
    
            public Listings42_Controller(ISomeIndex someIndex)
            {
              someIndex = someIndex;
            }
    
            [HttpGet]
            [RequireHttps]
            [Route("test1")]
            public async Task<HttpResponseMessage> GetIndex()
            {
                var obj = await someIndex.Generate();
    
                return new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(SerializeToXml(obj),Encoding.UTF8, "application/xml")
                };
            }
    
            [HttpGet]
            [RequireHttps]
            [Route("test2")]
            public async Task<HttpResponseMessage> GetIndex2()
            {
                var obj = await someIndex.Generate();
    
                return new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(SerializeToXml(obj),Encoding.UTF8, "application/xml")
                };
            }
    }
    

    使现代化

    所以在dev服务器上一切正常,在生产服务器上,当这两种方法在SomeController下时,我对它们都有问题。若我将方法拆分为不同的控制器,那个么SomeController下的GetIndex()方法性能较差,Some2Controller下的GetIndex2()性能很好。

    1 回复  |  直到 6 年前
    推荐文章