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" %>

Vos commentaires

Aucun commentaire pour le moment.

Autres publications sur le sujet

Aucune référence pour le moment.

Cet article ne peut faire référence à d'autres publications.

Commenter cet article

Cet article ne peut être commenté.