我们正在开发一个 .NET WCF 项目,我们在 IIS 上托管了不同的服务。我们的一种发布方法目前需要 10 多分钟才能从外部服务器获得响应。该项目在 localhost 上运行并正常工作,但在 IIS 上,它会在 5 分钟内超时,并给我们带来 500 内部服务器错误。我的问题是我们应该采取什么方法来解决这个错误,以及我们如何记录抛出的确切错误。
我们尝试使用 IIS 管理器更改 IIS 设置,在 Web.config 文件中添加执行超时,将 HttpWebRequest 超时设置为超过 10 分钟。
如果我正确理解你的问题,你正在试图找出为什么响应需要这么长时间才能返回,而不仅仅是试图增加超时来进行补偿。如果您期望有一个需要几分钟才能响应的 http 调用,那么我同意 Lex Li 的观点,即您遇到了基本的设计问题。我假设您正在尝试确定我其余答案中速度放缓的原因。
此类问题通常是由线程死锁引起的。如果您混合同步和异步上下文,我会从那里开始我的调查。特别是对
.Result
或 .Wait()
的任何使用都应该进行分析。在这些情况下请考虑使用 .ConfigureAwait(false)
,因为这通常可以解决问题。有关更多信息,请参阅这篇文章:.NET 中的ConfigureAwait 的使用
对于日志记录,有很多第三方日志记录框架,其中任何一个都足以满足您在这种情况下的调试需求。我特别喜欢 Azure Application Insights(如果您使用的是 Azure)、Splunk 和 SumoLogic。