使用C#开发ActiveX控件,封装到浏览器使用,出现找不到XXXX.dll的异常解决
2014-03-19 19:38
806 查看
背景:
项目中使用C#开发一款组件,用于Tomcat+Jsp项目中,在浏览器中通过Active组件的方式调用,部分功能会出现找不到 XXX.dll的问题。
异常原因:
通过浏览器调用C# Active控件时,默认到IE浏览器的Bin目录下寻找 控件的dll文件,所以引发该异常。
解决方案:
项目中使用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# 无法加载DLL“xxxx”:找不到指定的模块(异常来自HRESULT:0X8007007E)的一个解决方法
- C++封装dll并用C#调用(范例),解决C#调用C++的dll找不到入口点异常
- c# 无法加载DLL“xxxx”:找不到指定的模块(异常来自HRESULT:0X8007007E)的一个解决方法
- C#开发中提示无法加载DLL"***.dll":找不到指定的模块(异常来自HRESULT:0x8007007E)问题的解决办法
- c# 无法加载DLL“###.dll”,: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E),解决办法总结
- C# WPF 项目中无法使用Console输出时出现句柄无效的IO异常解决方法
- c# 无法加载DLL“###.dll”,: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E),解决办法总结
- 使用C#操作OFFICE文件时出现异常的解决办法
- 关于使用EmguCV出现 “无法加载 DLL“cvextern”: 找不到指定的程序” 的解决方法
- C# 调用C++ DLL 返回类型为字符的接口 出现异常 解决办法
- c# 无法加载DLL找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 的解决办法之一
- C# 解决引用dll,出现dll不可以使用等问题
- C#使用String.Format()方法时,出现异常"输入的字符串格式有误"的解决方法
- C#2010 在使用 System.Data.SQLite.dll 时出现异常
- 关于使用EmguCV出现 “无法加载 DLL“cvextern”: 找不到指定的程序” 的解决方法
- 关于使用EmguCV出现 “无法加载 DLL“cvextern”: 找不到指定的程序” 的解决方法
- 使用浏览器访问项目的时候,出现相关异常的解决办法
- c# 无法加载DLL“###.dll”,: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E),解决办法总结
- c++ clr编译dll在c#调用时出现“试图加载不正确的格式”“找不到dll”错误的解决
- 使用eclipse开发Android,项目出现小红叉,找不到R文件解决办法