【问题标题】:.Net code execution just stops, no exception thrown.Net 代码执行只是停止,没有抛出异常
【发布时间】:2012-01-19 04:36:36
【问题描述】:

我有一个 VB.Net 类,我通过一个 asp.net 页面的手动线程调用它。当代码执行试图调用特定的外部 DLL 执行时,就会停止。不会抛出异常。我在调用之前和之后以及错误处理程序中写入日志。仅记录通话之前的日志条目。

这在我的开发机器上运行良好,但在部署服务器上却失败了。我今天早些时候使用了一个演示版本,它正在工作。

本周早些时候,我在使用不同的第三方 dll 时发生了类似的事情。原来我在服务器上安装了不同版本的组件。在这种情况下,我寻找了它,但我的 bin 文件夹和我的开发机器上的 dll 的安装文件夹和 md 中都有相同的版本。

知道我该如何弄清楚这里发生了什么吗?

【问题讨论】:

  • 大约 7 分钟后,终于抛出异常:“线程被中止”。这是否意味着 DLL 正在阻塞/锁定/循环或其他类似的事情?这个异常是来自 dll 还是来自 CLR?
  • 好的,找到问题了。看起来这对于 DLL 和我的情况非常具体。 DLL,websitesscreenshot.dll 做其他网站的屏幕截图。它在后台使用 IE 将页面设置为图像。我在服务器上捕获的页面混合了 ssl/非 ssl(安全/非安全)内容,并且 IE 弹出了一个不可见的对话框。这是挂起 DLL 直到线程死亡。我没有错过任何异常,因为 dll 被挂起并且没有发送。更改 IE 安全设​​置以允许混合内容并不能解决问题。将我所有的 http 更改为 https。

标签: .net dll exception-handling


【解决方案1】:

尽管您提到了“演示版”,但您没有提供有关外部 DLL 的任何详细信息。这只是猜测:会不会有一些许可问题? DLL 检查您是否在开发服务器上运行并且在那里工作正常,但在生产服务器(我假设为 IIS)上却没有。延迟可能与 DLL 尝试联系许可服务器有关。

其实还有一个原因:你有一个有效的license但是部署服务器无法连接到互联网。

另外,请检查您的部署服务器是否可以访问 crl.microsoft.com。一些插件试图访问它以撤销一些证书。更多相关信息:

http://www.eggheadcafe.com/microsoft/Windows-MSI/29381925/code-signing-performance-problems-with-certificate-revocation-chec.aspx

【讨论】:

    【解决方案2】:

    尝试将一些日志信息放入您正在调用的 dll 中。 log4net 之类的框架对此很有用,然后找出代码在 dll 中的位置。

    【讨论】:

      【解决方案3】:

      我以前使用过的一种方法是使用Fusion Log Viewer 记录任何程序集绑定。

      运行应用程序后,您可以检查日志以查找错误/失败的内容。

      【讨论】:

      • 这看起来是个好工具,我得把它加到我的胸口。
      • 它非常方便...如果您对程序集有疑问,您将看到 .NET 在何处以及如何搜索它。
      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2012-03-19
      • 1970-01-01
      • 2011-10-18
      • 2013-02-09
      • 1970-01-01
      相关资源
      最近更新 更多