我的服务器上有一个托管在 IIS 7.5 上的 WCF 服务。我在我的服务中使用了 Entity framework 5.0。
当我通过添加服务引用并在站点中创建客户端从本地系统调用该服务时,大约需要 40 秒才能获得响应。我尝试调用我本地的相同服务,这里只需要 3-4 秒。
将服务器上的服务的引用添加到本地系统上的站点后,在 web 配置中添加的绑定和端点如下所示:
<binding name="WSHttpBinding_IMyWCFService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:50:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
<endpoint address="https://<url>/MyWCFService.svc/soap"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyWCFService"
contract="MerchantService.IMyWCFService" name="WSHttpBinding_IMyWCFService" />
首先我认为这是实体框架的问题。但后来我使用实体框架分析器检查了该方法的执行时间。它几乎不需要1秒。
同样,当我调用该服务时,它需要添加一个我正在添加的标题。
所以,它需要 40 秒的时间。而且它的启动速度并不慢,也不是第一次花时间。总是需要这么多时间。
网络速度是否可能是导致此延迟的原因。如果有,达到什么程度?
该服务返回一个列表List。这可能是一个问题,我们不应该返回列表。有什么替代方案?
此外,实体框架是否会在每次请求到来时以及数据库连接是否需要时间时建立与数据库的连接。有可能吗?
请帮忙。谢谢