0

客户站点:Windows 窗体

服务器站点:.net 2.0 asmx。IIS 7,赢得 2008 R2。

首次调用定义:IIS 已重新启动或应用程序池已回收。

对 IIS 中托管的 Web 服务的第一次调用总是很慢,大约需要 20 多秒。

随后的调用很快,不到 1 秒。客户端应用程序的新实例也执行相同(快速)。

我在客户端 app.config 中设置了 useDefaultWebProxy = false, bypassProxyOnLocal = true,这是我从互联网上的各种来源了解到的。

我通过在客户端 PC 中运行客户端应用程序(第一次调用 web 服务)进行了测试,正如预期的那样,它很慢。然后我在服务器 PC 中运行客户端应用程序(第二次调用 web 服务),它很快。

反过来也是如此,如果客户端应用程序首先在服务器中执行(第一次调用,它很慢),那么第二次在客户端 PC 中运行客户端应用程序(第二次调用)很快。

从上面的场景中,我想说网络代理可能不是这里的问题..

我在 Web 服务项目的属性中也将“Generete 序列化程序集”设置为 On。

有没有办法改善这一点?

4

2 回答 2

0

可能有多种原因导致初始化缓慢。最为显着地:

  • 准备好应用程序,如果存在任何模板,则缓存它们(这应该不是问题,除非您的项目中也有网页)
  • 其他库需要时间来初始化。特别是,查看数据库连接的性能。我想到了实体框架。首次运行查询时,编译、生成和缓存查询需要一些时间。后续查询更快。

如果您使用的是 EntityFramework,我唯一的建议是更新 Entity Framework 的版本,这将要求您还使用较新版本的 .NET。

于 2013-09-20T10:08:28.103 回答
0

对于第一个请求,IIS 将不得不唤醒(或初始化)一些进程来处理请求,这导致第一个响应的时间很长。

更简单和最常见的方法是第一次忍受,并定期 ping 您的站点以保持这些进程唤醒。我认为那里有一些不错的 Ping 服务。

于 2013-09-20T11:52:01.800 回答