ASP.NETアプリケーションをビルドしました。ドキュメントを管理するためにサードパーティのCOMオブジェクトSDKを利用する必要があります。アプリケーションの名前は "Interwoven"です。 COMオブジェクトのドキュメントによると、 "アプリケーションごとに複数のIManDMSオブジェクトを作成しないでください"。ASP.NETアプリケーションでCOMアクセスを管理する方法
IManDMSオブジェクトの1つのインスタンスを作成し、それを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人のユーザーが同時にページを要求すると、私は次のエラーを取得する:
[Sessions ][Add ]Item "SV-TRC-IWDEV" already exists in the collection
どうやらあなたは同時に、同じ名前で、IManDMSオブジェクトに複数のセッションを追加することはできません。これは、アプリケーション全体に対して、いつでも1つのセッションしか開くことができないことを意味します。
同様の問題を経験したことがあり、アプリケーションごとに複数のIManDMSオブジェクトを作成できないと仮定して、この問題を回避する方法を提案できますか?
ありがとうございました。
残念ながら、私は別の名前を追加することはできません。名前は、どのサーバーに接続するかを示します。サーバーは1つだけです。 「ロック」ステートメントを使用すると、このトリックが実行されているようです。助けてくれてありがとう。 –