如何在网络共享上打开Lotus Notes数据库?

时间:2012-11-07 20:55:53

标签: com lotus-notes

我正在尝试通过C#与Notes数据库(我的个人邮件文件)进行交互,并且我被困在门外,尝试使用以下代码打开数据库:

        string sNotesSourceFolder = "$Inbox";
        string sUserName = "scady";
        string sMailFile = @"NotesMail_FDrive\ARchives\" + sUserName + ".nsf";         
        string sServerName = @"Answers1/Answers";
        string sPassword = "xxxxxx";


        //Creating the notes session 
        NotesSession session = new NotesSession();
        session.Initialize(sPassword);
        NotesDatabase NotesDb = session.GetDatabase(sServerName, sMailFile, false);

        //If the database is not already open then open it. 
        if (!NotesDb.IsOpen)
        {
            NotesDb.Open();
        }

使用服务器名称和路径调用session.GetDatabase(),nsf文件返回null,这显然意味着它无法打开数据库。

我在本地运行此代码,针对名为" Answers1 / Answers"的Notes服务器。我现在正在考虑基于Notes服务器,nsf文件位于" NotesMail_FDrive \ ARchives \ xyz.nsf"的网络文件共享中。

2 个答案:

答案 0 :(得分:1)

对不起,我在第一次通过时没有注意到这一点......

sMailFile的值不应为“\ 10.10.10.71 \ notesdata1 \ NotesMail \ ARchives \ scady.nsf”。您注释掉的其他两个值也是错误的。 getDatabase的参数是Domino服务器的可分辨名称和相对路径。没有服务器IP,没有卷,也没有“file:”前缀。就像这样:"archives\scady.nsf"。当您在Notes客户端中打开数据库并调出数据库属性对话框时,它应该与您在路径中看到的完全相同。

上一个答案

您的sServername变量包含Domino服务器的可分辨名称。

但是你为什么要使用File.Exists? Domino服务器希望独占访问其数据树中的所有文件。如果您实际上是通过文件系统调用成功访问Domino服务器上的文件,那么您可能会锁定Domino服务器无法访问它。

但是:你在哪里运行这段代码?您是在同一台计算机上运行它,还是在通常用于阅读电子邮件的帐户下运行它?或者在另一台计算机和帐户上?

答案 1 :(得分:1)

文件所在的服务器是Notes服务器还是网络共享?

如果它是网络共享,则需要驱动器映射,但sServerName将“”到达“本地”驱动器。我假设Notesdata1是X上的一个目录,所以如果它是驱动器名称,请删除它。

string sMailFile = @"X:\Notesdata1\NotesMail\ARchives\scady.nsf";
string sServerName = @"";

如果它是Notes服务器并且Notesdata1是Notes服务器的数据目录,那么

string sMailFile = @"NotesMail\ARchives\scady.nsf";
string sServerName = @"Answers1/Answers";