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

来源:互联网 发布:爱淘宝红包怎么没了 编辑:程序博客网 时间:2024/06/05 15:37

背景:

项目中使用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;            }         }

0 0
原创粉丝点击