2012-01-19 71 views
1

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

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

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

任何想法我怎么去弄清楚这里发生了什么?

+0

大约7分钟后,终于抛出异常:“线程正在中止”。这是否意味着DLL阻塞/锁定/循环或其他类似的东西?这个异常是来自DLL还是来自CLR? –

+0

好的,发现问题了。它看起来像这是非常具体的DLL和我的情况。 DLL,websitesscreenshot.dll做屏幕大小的其他网站。它在后台使用IE将页面设为图像。我在服务器上捕获的页面混合了ssl/non ssl(安全/非安全)内容,IE弹出了一个不可见的对话框。这是悬挂DLL直到线程死亡。我没有错过任何异常,因为dll挂起而没有发送。更改IE安全设置以允许混合内容不能解决问题。将我所有的http改为https。 –

回答

0

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

实际上可能还有另一个原因:您拥有有效的许可证,但部署服务器无法联系Internet。

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

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

0

尝试把一些日志记录信息要调用的dll。像log4net这样的框架对此可能很有用,然后找出代码在dll中有多远。

0

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

运行应用程序后,您可以检查日志以找出发生了什么错误/失败。

+0

这看起来像一个很好的工具,我将不得不把它添加到我的胸部。 –

+0

它非常方便......如果您遇到程序集问题,您将看到.NET在哪里以及如何搜索它。 – CCBlackburn