J'ai créé l'application ASP.NET. J'ai besoin d'utiliser un SDK d'objet COM tiers pour gérer les documents. Le nom de l'application est "Interwoven". Selon la documentation de l'objet COM, vous devez "Ne jamais créer plus d'un objet IManDMS par application". J'ai donc décidé de créer une instance de l'objet IManDMS et de la stocker dans une variable Application. Voici la fonction que j'utilise pour récupérer un objet IManDMS:Comment gérer l'accès COM dans une application ASP.NET
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);
…
Le code ci-dessus fonctionne très bien quand une seule personne demande la page .ASPX à la fois. Lorsque 2 utilisateurs demandent en même temps que la page que je reçois l'erreur suivante:
[Sessions ][Add ]Item "SV-TRC-IWDEV" already exists in the collection
Apparemment, vous ne pouvez pas ajouter plus d'une session à l'objet IManDMS, avec le même nom, en même temps. Cela signifie que je ne peux avoir qu'une session ouverte, pour l'application entière, à un moment donné.
Y a-t-il quelqu'un qui a de l'expérience avec un problème similaire et qui peut proposer une suggestion pour contourner ce problème, en supposant que je ne peux pas créer plus d'un objet IManDMS par application?
Merci.
Malheureusement, je ne peux pas ajouter un autre nom. Le nom indique le serveur auquel se connecter. Il n'y a qu'un seul serveur. L'utilisation de l'instruction "lock" semble faire l'affaire. Merci pour l'aide. –