目前的项目需要在asp.net中使用一个由客户提供的dll (用COM写的)。搜索了csdn以前的问题解答,我用了tlbimp.exe对dll文件进行wrapping, 然后在add reference 中加入了wrapped 后的dll文件。最后,用regsvr32对原dll进行了注册。都搞定后,在我的c#代码中加入了如下几行:using DLLNamespace;private void Page_Load(object sender, System.EventArgs e)
{
//early binding
DllNamespace.COMClass COMInstance = new DllNamespace.COMClass();
try
{
((DllNamespace.COMClass)COMInstance).dosth();
}
catch (Exception ex)
{
Response.Write("Exception in COMClass: " + ex.Message);
}
}奇怪的是,除了第一次能够正常运行之外,其后几次都会throw一个“java.lang.NullPointer Exception”. 我想有两种可能,一是原dll文件是用java写的,所以才会抛出java异常。二是.net的garbage collection 对COM不起作用。于是,我就在((DllNamespace.COMClass)COMInstance).dosth();后面加了句COMInstance.destroy();重新启动机器和VS,但结果还是一样。各位高手们,帮我看一下。谢谢。
{
if (!IsPostBack)
{
//early binding
DllNamespace.COMClass COMInstance = new DllNamespace.COMClass();
try
{
((DllNamespace.COMClass)COMInstance).dosth();
}
catch (Exception ex)
{
Response.Write("Exception in COMClass: " + ex.Message);
}
}
}
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q317109
“<%@ Page aspcompat="true" language="c#" Codebehind="Gifting.aspx.cs" AutoEventWireup="false" Inherits="MazamaWeb.Gifting" %>”我也觉得奇怪,会抛出“java.lang.NullPointer Exception”,会不会是因为COM是用java写的。客户提供的COM文件是一个dll文件。To goody9807(), 还是一样。