2012-11-07 86 views
0

我想與Notes數據庫(我的個人郵件文件)進行交互,通過C#和我堅持出了大門,試圖打開與下面的代碼數據庫:如何在網絡共享上打開Lotus 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」的網絡文件共享上。

+0

要知道,在網絡共享訪問的NSF是不受支持的配置。這意味着它應該可以工作,但它從來沒有經過測試/建立用於此設置。 –

+0

在與我們的Notes管理員交談後,他解釋說它「花了一些工夫」讓Domino能夠在網絡文件共享中使用nsfs,所以我現在想知道這是否是問題所在。郵件文件與多米諾骨牌服務器不在同一臺機器上。有任何想法嗎? – TheUXGuy

+1

如果Notes客戶端可以打開數據庫,那麼使用Notes API編寫的程序應該能夠使用客戶端看到的完全相同的服務器名稱和路徑名來打開數據庫,只要您對這兩次嘗試都使用相同的ID文件。如何嘗試一個實驗?只需嘗試打開names.nsf或位於服務器數據目錄中的任何其他數據庫,這些數據庫至少可以讀取訪問權限。如果失敗了,那麼你有某種訪問問題。 –

回答

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"; 
+0

看起來上面的第二個選項應該是獲勝的解決方案,但仍然沒有運氣。我開始認爲這與郵件文件位於Notes服務器本身以外的機器上不支持的配置所描述的內容有關。 – TheUXGuy

+0

如果郵件文件不在Notes服務器上,它比前者更接近前者。根本沒有與Notes服務器連接。您的計算機的Notes.ini文件中列出的數據目錄是什麼目錄?該路徑中的存檔目錄是什麼? –

+0

當X:映射到NotesMail_FDrive時,試着設置sMailFile =「X:\ ARchives \ scady.nsf」 –

1

對不起,我沒有注意到這一點在第一輪...

爲sMailFile的價值不應該是 「\ 10.10.10.71 \ notesdata1 \ NotesMail \檔案\ scady.nsf」。你註釋掉的另外兩個值也是錯誤的。 getDatabase的參數是Domino服務器的可分辨名稱和相對路徑。沒有服務器IP,沒有卷,沒有「file:」前綴。就像這樣:"archives\scady.nsf"。當您在Notes客戶機中打開數據庫並調出數據庫屬性對話框時,它應該正是您所看到的路徑。

以前的答案

你sServername變量包含Domino服務器的專有名稱,因爲它應該。

但是,爲什麼使用File.Exists? Domino服務器希望獨佔訪問其數據樹中的所有文件。如果您實際上是通過文件系統調用成功訪問Domino服務器上的文件,那麼可能是您將Domino服務器鎖定爲無法訪問它。

但也是:你在哪裏運行這段代碼?你是在同一臺計算機上運行它,並使用通常用於閱讀電子郵件的同一帳戶嗎?或在另一臺電腦和帳戶?

+0

我只使用File.Exists來確保它不會從調用中「看到」文件時出現問題。它可以/應該被刪除,一旦我得到這個運行。 – TheUXGuy

+0

而且,我正在運行同一臺計算機上的代碼,並使用我用於通過Notes客戶端閱讀我的郵件的相同帳戶。 – TheUXGuy

+0

好的。我已經更新了我的答案。但是,如果這還不夠,你能否更新你的代碼來顯示你真正想要使用的代碼是什麼?代碼中的另一個大問題是,在註釋行和非註釋行中分配給sMailFile的每個值都是錯誤的。 –

相關問題