首次调用C#.net 2.0 Web服务很慢

时间:2013-09-20 10:01:51

标签: c# web-services

客户端站点:Windows窗体

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

首次呼叫定义:IIS重新启动或应用池已回收。

对IIS中托管的Web服务的第一次调用非常缓慢,大约需要20秒钟。

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

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

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

反之亦然,如果客户端应用程序首先在服务器中执行(第一次调用,它很慢),第二次在客户端PC中运行客户端应用程序(第二次调用)很快。

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

我已将“Generete序列化程序集”设置为On以及Web服务项目的属性。

无论如何要改善这个吗?

2 个答案:

答案 0 :(得分:0)

可能有多种原因导致初始化缓慢。最值得注意的是:

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

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

答案 1 :(得分:0)

对于第一个请求,IIS必须唤醒(或初始化)某个进程来处理请求,这会导致第一次响应很长时间。

更容易和最常见的方法是第一次忍受,并定期ping您的网站以保持这些进程被唤醒。我认为有一些很好的Ping服务。