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

Com 如何在网络共享上打开Lotus Notes数据库?,com,lotus-notes,Com,Lotus Notes,我正试图通过C#与Notes数据库(我的个人邮件文件)进行交互,我被卡在门外,试图用以下代码打开数据库: string sNotesSourceFolder = "$Inbox"; string sUserName = "scady"; string sMailFile = @"NotesMail_FDrive\ARchives\" + sUserName + ".nsf"; string sServerName

我正试图通过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();
        }
使用nsf文件的服务器名称和路径调用session.GetDatabase()时返回null,这显然意味着它无法打开数据库


我在本地运行这段代码,针对一个名为“Answers1/Answers”的Notes服务器。我现在想,基于Notes服务器,nsf文件位于“NotesMail\u FDrive\ARchives\xyz.nsf”的网络文件共享上。

很抱歉,我第一次没有注意到这一点

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

先前的答案

sServername变量包含Domino服务器的可分辨名称,这是应该的

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


还有:你在哪里运行这段代码?您是否在同一台计算机上运行它,并且使用的帐户与您通常用来阅读电子邮件的帐户相同?或者在不同的计算机和帐户上?

文件所在的服务器是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";

我只使用File.Exists来确保在调用中“查看”文件时不会出现问题。一旦我运行了它,它就可以/应该被删除。而且,我在同一台计算机上运行代码,使用的帐户与我通过notes客户端阅读邮件的帐户相同。好的。我已经更新了我的答案。但是,如果这还不够,您能否更新您的代码以显示您实际想要使用的代码?代码中的另一个大问题是,您在注释行和非注释行中分配给sMailFile的每一个值都是错误的。@DavidNavarre-然后您应该像打开本地文件一样打开它,即服务器是空的。您最好使用映射到文件共享的驱动器进行尝试,以便实际文件名为R:\Archives\xyz.nsf。这是一种糟糕的做法,因为Notes设计用于支持真正的本地文件或存储在服务器上的文件。存储在fie共享上的文件是Notes试图避免的混合文件。这个问题措辞糟糕。在11月9日17:16对我的回答的评论中,他说“邮件文件位于notes服务器本身以外的机器上。”我们是否应该编辑该问题以澄清将来搜索该问题的人?请注意,在网络共享上访问NSF是一种不受支持的配置。这意味着虽然它应该可以工作,但从未为此设置进行过测试/构建。在与我们的Notes管理员交谈后,他解释说,让Domino能够在网络文件共享上使用nsfs“需要一些工作”,所以我现在想知道这是否是问题所在。邮件文件与domino服务器不在同一台计算机上。有什么想法吗?如果Notes客户端可以打开数据库,那么使用Notes API编写的程序应该能够使用客户端看到的完全相同的服务器名和路径名打开数据库,只要您在两次尝试中使用相同的ID文件。试一试怎么样?只需打开names.nsf或位于服务器数据目录中的任何其他数据库,您至少有读取权限即可。如果失败了,那么你会遇到某种访问问题。看起来你上面的第二个选项应该是成功的解决方案,但仍然没有运气。我开始认为这与被描述为不受支持的配置有关,其中邮件文件位于notes服务器本身以外的计算机上。如果邮件文件不在notes服务器上,则与notes服务器相比,它更接近前者。您根本没有与Notes服务器连接。Notes.ini文件中列出的机器数据目录是什么目录?存档目录是否在此路径中?当X:映射到NotesMail\u时,尝试设置sMailFile=“X:\ARchives\scady.nsf”并发送给所有响应者。看起来(可耻地)这一直是身份验证的问题?如果我在运行此代码之前在运行此代码的计算机上打开notes客户端,那么一切都会正常工作—即使我随后关闭了客户端。我不完全清楚为什么会这样。将此标记为已回答,因为此答案正确地描述了访问存储在网络文件共享上的notes db所需的设置,这是我最初问题的要点。