DMI's Blog sur les technos .NET(dotnet) et J2EE

Probleme d'exécution d'un composant COM avec ASP.NET


Il faut savoir qu'il n'est pas possible (par défaut) d'éxécuter une methode d'un coposant COM à partir d'une page ASP.NET.
Pour comprendre pourquoi cela n'est pas possible, il faut d’abord comprendre le mode de fonctionnement des threads ASP .NET et ceux des composants COM dans la majorité des cas.
L’explication étant trop longue, je résume en disant qu’une application ASP .NET/web services est intrinsèquement définie par un modèle à multiples threads cloisonnés (MTA, Multi-Threaded Apartement)
alors qu’un composant COM utilise en général un modèle dit STA (Single-Threaded Apartment, modèle avec un thread unique cloisonné).
Pour résoudre se problème Microsoft propose une solution peut élégante et gourmande en ressource qui consiste à cloisonner
tous les threads d’une page ASPX (application ASP .NET) en une seule pour simuler le modèle STA. Concrètement, la solution consiste à activer la propriété ASpCompat dans la directive @Page pour avoir ceci :

<%@ Page AspCompat = true language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>

aucun commentaire - aucun rétrolien