gpt4 book ai didi

c# - 初始 Web 服务调用在 .NET 中需要很长时间

转载 作者:行者123 更新时间:2023-11-30 18:40:15 25 4
gpt4 key购买 nike

我有一个使用 HTTPS 托管在 IIS 中的 WCF Web 服务。服务和客户端应用程序都是用 C# 编写的。客户端应用程序进行的第一个 Web 服务调用需要超过 15 秒才能完成。一旦进行了初始调用,后续调用将在大约 100 毫秒内完成。为了测试,我有一个简单的方法:string Ping(int val);它只是回显作为字符串传入的数字。

奇怪的是,一千英里外的用户报告了这个问题,但我并没有在我的开发机器上遇到它。我只看到第一个请求需要 2 到 3 秒。现在几乎每个客户都报告第一个请求需要超过 15 秒。

这是 C# 客户端的正常行为吗?有没有人遇到过这个问题?

我的网络服务绑定(bind)配置如下:

<basicHttpBinding>
<binding
name="BasicHttpBinding_IMyWebSvc"
maxBufferSize="16777216"
maxReceivedMessageSize="16777216"
messageEncoding="Mtom">
<readerQuotas
maxDepth="1024"
maxStringContentLength="262144"
maxArrayLength="16777216"
maxBytesPerRead="16777216"
maxNameTableCharCount="16777216"
/>
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>

编辑:这个问题变得很奇怪。

我使用精简的代理代码编写了一个测试客户端,其中只有 Ping() 测试方法。运行测试,它仍然需要 >15 秒。开始更改客户端缓冲区大小,因为 Ping() 函数不需要大缓冲区并且问题消失了。将缓冲区大小恢复为原始值,问题没有再出现。运行真实客户端,第一个调用在 1.2 秒内完成。现在我无法在我的开发 PC 上重现该问题。

最佳答案

在 IIS 上托管 .NET 应用程序的问题在于应用程序池预热时间。池终止后(空闲时间或 bin 文件修改后),直到下一个请求才会重新创建。您可以使用 IIS 的 IIS 应用程序预热模块使您的应用程序池保持事件状态(您可以使用 Web 平台安装程序安装它)

关于c# - 初始 Web 服务调用在 .NET 中需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com