日期:2014-05-17  浏览次数:20512 次

“ADODB.StreamClass”的 COM 报错.求大神们.

这个问题.是读取后缀为  .eml 格式的时候 使用 ADODB.Stream读取报错.

本地测试没问题.服务器就出错了.╮(╯▽╰)╭.

自己弄了2天了,没解决.求大神帮助
------最佳解决方案--------------------
引用:
注册ADODB.Stream组件

regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"


这个我试过了. 元旦放假3天还是没解决出来.
------其他解决方案--------------------
你可以采用开源的代码进行读取
http://sourceforge.net/projects/sasa/files/

或者
http://www.codeproject.com/KB/office/EML_ReaderEx.aspx
------其他解决方案--------------------
 定义成StreamClass而不是Stream试试
------其他解决方案--------------------
引用:
本地测试没问题.服务器就出错了.╮(╯▽╰)╭.

这个需要注册什么组件不。


就是不知道要注册什么,所以还没找出问题来.
我也是估计是服务器缺少某个dll或者未注册.但是具体我不清楚.
------其他解决方案--------------------
引用:
 定义成StreamClass而不是Stream试试


试了不行,还是一样
------其他解决方案--------------------


这是我后台代码 ashx文件里面的.


/// <summary>
        /// 读取eml格式文件
        /// </summary>
        /// <param name="file">路径</param>
        /// <returns></returns>
        public string ReadEML(string file)
        {
            CDO.Message oMsg = new CDO.Message();
            ADODB.Stream stm = null;
            //读取EML文件到CDO.MESSAGE,做分析的话,实际是用了下面的部分
            try
            {
                stm = new ADODB.Stream();
                stm.Open(System.Reflection.Missing.Value,
                         ADODB.ConnectModeEnum.adModeUnknown,
                         ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified,
                         "", "");
                stm.Type = ADODB.StreamTypeEnum.adTypeBinary;//二进制方式读入

                stm.LoadFromFile(file); //将EML读入数据流

                oMsg.DataSource.OpenObject(stm, "_stream"); //将EML数据流载入到CDO.Message,要做解析的话,后面就可以了。  
            }