0

我正在尝试通过 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”的网络文件共享上。

4

2 回答 2

1

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

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

上一个答案

您的 sServername 变量应该包含 Domino 服务器的专有名称。

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

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

于 2012-11-07T22:03:55.307 回答
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";
于 2012-11-08T16:19:44.710 回答