我有一个非常简单的ASP.NET WebAPI端点,它对数据库进行一次调用,并以JSON的形式返回这些行。响应大小约180 is (180条记录)。
当我将该项目部署到Azure时,调用大约需要100 is -这很好,但只在第一分钟,然后突然慢到24秒。
在下面的代码中,我将手动序列化对象,而不是直接返回模型(使用相同的webapi JSON序列化程序),以了解花在哪里的时间。
[HttpGet]
[Route("{stuffId}/toys")]
[ResponseType(typeof(IQueryable<FooModel>))]
public HttpResponseMessage GetStuff(int stuffId)
{
var stuff = QueryProcessor.Execute(new GetStuffByIdQuery
{
StuffId = stuffId,
});
var mappedResult = stuff.Map();
var response = Request.CreateResponse(HttpStatusCode.OK);
var json = JsonConvert.SerializeObject(mappedResult);
response.Content = new StringContent(json, Encoding.UTF8, "application/json");
return response;
}和我意识到的是令人惊讶的是,时间正花在序列化方法上.
var json = JsonConvert.SerializeObject(mappedResult);
更令人困惑的是,将相同的代码部署到Azure上的其他网站上,而不是我们的生产环境,或者在本地运行它,指向生产数据库,它总是很快的。
知道为什么会这样吗?
发布于 2016-12-15 14:53:17
按照matt_lethargic指出的想法,我发现在.map调用上做了一些事情,导致了这个问题。
我被拖延执行的事实误导了,所以做秒表我并没有陷入确切的问题。
基本上,在ResourceManager上每一行都有一个实例化来访问资源文件中的一些值。
发布于 2020-03-17 03:10:47
你能做到的
var mappedResult = stuff.Map().ToList();这对我来说很管用
https://stackoverflow.com/questions/40993827
复制相似问题