【发布时间】:2009-03-10 21:46:30
【问题描述】:
我们有一个 .net 远程处理应用程序位于 Web 应用程序和数据库之间。偶尔我们会遇到奇怪的问题。远程调用只是挂起并且永远不会返回。我们使用包嗅探器来检查流量。这似乎是服务器端的问题。如果我们停止服务器应用程序,将立即抛出网络异常。但是,当我们调试服务器代码时,它不会遇到任何代码。似乎该请求被阻止在远程堆栈内的某处。有没有人有类似的经历?
【问题讨论】:
我们有一个 .net 远程处理应用程序位于 Web 应用程序和数据库之间。偶尔我们会遇到奇怪的问题。远程调用只是挂起并且永远不会返回。我们使用包嗅探器来检查流量。这似乎是服务器端的问题。如果我们停止服务器应用程序,将立即抛出网络异常。但是,当我们调试服务器代码时,它不会遇到任何代码。似乎该请求被阻止在远程堆栈内的某处。有没有人有类似的经历?
【问题讨论】:
不久前,我在使用 IPC 的 .Net 远程处理中确实遇到了类似的问题。我不记得所有的细节,所以请原谅我。我发现的问题是我的客户端应用程序正在对服务器应用程序进行远程调用,这需要很长时间(几分钟)才能完成。在将客户端和服务器都连接到调试器并捕获所有抛出的异常之后,我发现远程调用实际上最终抛出了某种超时异常(我的记忆想说内部消息与 COM 相关),因为没有活动在超时期间通过 IPC 通道发生。显然,当这些远程连接超时时,双方的链接基本上是死人行走。奇怪的是,我只能通过调试器看到这个异常——在发布模式下,我的应用程序就像你的一样挂起,没有任何迹象表明原因。我找到了远程超时设置,然后简单地关闭了超时(或者让它变得非常大,我又记不清了),这解决了问题。
【讨论】:
原来我们使用的 CMS 系统也使用 .NET Remoting,它会覆盖我们的安全设置。我们关闭了远程应用程序上的安全设置,现在一切正常。
【讨论】: