【发布时间】:2010-07-21 03:20:59
【问题描述】:
我已经构建了 ASP.NET 应用程序。我需要使用第三方 COM 对象 SDK 来管理文档。该应用程序的名称是“交织”。根据 COM 对象文档,您应该“不要为每个应用程序创建多个 IManDMS 对象”。
因此,我决定创建 IManDMS 对象的一个实例并将其存储在 Application 变量中。这是我用来检索 IManDMS 对象的函数:
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);
…
当一次只有一个人请求 .ASPX 页面时,上面的代码可以正常工作。当 2 个用户同时请求该页面时,我收到以下错误:
[会话][添加]项目“SV-TRC-IWDEV” 集合中已存在
显然,您不能同时向 IManDMS 对象添加多个具有相同名称的会话。这意味着在任何给定时间,我只能为整个应用打开一个会话。
假设我不能为每个应用创建多个 IManDMS 对象,是否有任何人遇到过类似问题并可以就如何解决此问题提出建议?
谢谢。
【问题讨论】: