您的位置:首页 > 编程语言 > C#

使用C#开发ActiveX控件,封装到浏览器使用,出现找不到XXXX.dll的异常解决

2014-03-19 19:38 806 查看
背景:

项目中使用C#开发一款组件,用于Tomcat+Jsp项目中,在浏览器中通过Active组件的方式调用,部分功能会出现找不到 XXX.dll的问题。

 

异常原因:

 

通过浏览器调用C# Active控件时,默认到IE浏览器的Bin目录下寻找 控件的dll文件,所以引发该异常。

 

解决方案:

public XXXActive()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}

/// <summary>
/// 未处理异常
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//("未处理异常 : "+e);
}

/// <summary>
/// 加载非默认位置的程序集
/// </summary>
public Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs e)
{
try
{
if (e.Name.Split(',')[0] == "XXXActive")
{
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

if (null == dir) return null;

Environment.CurrentDirectory = dir;
var path = Path.Combine(Environment.CurrentDirectory, "XXXActive.dll");
return Assembly.LoadFrom(path);
}
return null;
}
catch (Exception)
{
return null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# C# ActiveX
相关文章推荐