通过C#代码从Lotus Notes(.nsf)文件中提取附件时获取异常

时间:2014-07-22 13:51:20

标签: c# lotus-domino

在foreach循环中将itemA对象转换为Notesitem时,有人可以帮助我,因为我遇到异常。

  

无法转换类型为' System .__ ComObject'的COM对象。接口类型' Domino.NotesItem'。此操作失败,因为QueryInterface调用COM组件上的接口与IID' {2913158A-2EED-1069-BF5D-00DD011186B7}'由于以下错误而失败:不支持此类接口(来自HRESULT的异常:0x80004002(E_NOINTERFACE))。在WindowsApplication2.Form1.btnSearch_Click(Object sender,EventArgs e)中的C:\ WindowsApplication2 \ WindowsApplication2 \ Form1.cs:第319行}

我正在使用 Interop.Domino.dll 代码:

        NotesSession session = new NotesSession();
        session.Initialize("XXXXXX");
        try
        {
            NotesDatabase NotesDb = session.GetDatabase("", "C:\LotusFiles\\XYZ.nsf", false);

            if (NotesDb == null)
            {
                //System.Console.WriteLine("Can not connect to server.");
            }
            else
            {
                //System.Console.WriteLine("Connected");
            }

            Domino.NotesDocumentCollection col = NotesDb.AllDocuments;
            for (int i = 0; i < col.Count; ++i)
            {
                Domino.NotesDocument doc = col.GetNthDocument(i);

                if (doc.HasEmbedded)
                {
                    object[] itemsA = (object[])doc.Items;
                    foreach (NotesItem item in itemsA)
                    {
                        if (item.Name.Equals("$FILE"))
                        {
                            object[] values = (object[])item.Values;
                            //doc.GetAttachment(values[0].ToString()).ExtractFile(fileSavePath + values[0].ToString());
                        }
                    }
                }



            }

1 个答案:

答案 0 :(得分:1)

得到它解决phewwwwwwww ... Interop.Domino.dll在我的情况下是腐败的,所有面临这个问题的人请不要从互联网上下载Interop.Domino.dll而不是去Refrence - &gt ;添加参考 - &gt; COM - &gt;找到Lotus Domino对象和宾果!