我已經構建了ASP.NET應用程序。我需要利用第三方COM對象SDK來管理文檔。該應用程序的名稱是「交織」。根據COM對象文檔,您應該「不要爲每個應用程序創建多個IManDMS對象」。如何在ASP.NET應用程序中管理COM訪問
因此,我決定創建一個IManDMS對象實例並將其存儲在一個Application變量中。下面是我用來檢索IManDMS對象的功能:當只有一個人被要求在.aspx頁面同時
public static IManDMS GetDMS()
{
IManDMS dms = HttpContext.Current.Application["DMS"] as IManage.IManDMS;
if (dms == null)
{
dms = new IManage.ManDMSClass();
HttpContext.Current.Application["DMS"] = dms;
}
return dms;
}
…
// Here is a code snippet showing its use
IManage.IManDMS dms = GetDMS();
string serverName = "myServer";
IManSession s = dms.Sessions.Add(serverName);
s.TrustedLogin();
// Do something with the session object, like retrieve documents.
s.Logout();
dms.Sessions.RemoveByObject(s);
…
上面的代碼工作正常。當2個用戶併發請求的頁面,我得到了以下錯誤:
[Sessions ][Add ]Item "SV-TRC-IWDEV" already exists in the collection
顯然,你不能超過一個會議上向IManDMS對象添加,具有相同的名稱,在同一時間。這意味着我可以在任何給定的時間爲整個應用程序打開一個會話。
有沒有人有類似問題的經驗,並可以提供一個關於如何解決這個問題的建議,假設我不能爲每個應用程序創建多個IManDMS對象?
謝謝。
不幸的是,我不能添加不同的名稱。該名稱指示要連接到哪個服務器。只有一臺服務器。 使用「鎖定」語句似乎是在做伎倆。謝謝您的幫助。 – 2009-06-16 20:12:45