При использовании COM-компонентов однопотоковой квартиры (STA), таких как компоненты, разработанные с использованием Visual Basic, со страницы ASP.NET необходимо включить атрибут совместимости AspCompat = true вТег
<%@ Page>
на странице ASP.NET
Атрибут AspCompat заставляет страницу выполняться в режиме STA
ASP.NET по умолчаниюиспользует потоки MTA (многопоточные апартаменты)
При создании приложений ASP.NET, которые взаимодействуют с COM-объектами старой школы, такими как созданные с VB6 или Visual FoxPro (MTDLL), крайне важно, чтобы потоки, обслуживающие запросыиспользуйте однопотоковую резьбу в квартире.STA - это встроенная технология COM, которая позволяет надежно работать однопоточным компонентам в многопоточной среде.STA гарантирует, что COM-объекты, созданные в конкретном потоке, остаются в этом конкретном потоке, и любой доступ к COM-объекту из другого потока автоматически маршалирует этот поток в STA-потоке.Конечным эффектом является то, что вы можете иметь несколько потоков, но экземпляр COM-объекта живет в фиксированном, никогда не меняющемся потоке.
В ASP.NET по умолчанию используются потоки MTA (многопоточные апартаменты), которые являются действительно бесплатными, не обращающими внимания на маршалинг COM-объектов.Это значительно более эффективно, чем многопоточность STA, которая требует дополнительных затрат при определении того, нормально ли выполнять код в заданном потоке, или требуется ли какой-то вид потока / COM-маршалинга.Компоненты MTA COM могут быть очень эффективными, но компоненты STA COM в многопоточной среде всегда имеют значительную нагрузку.
STA в ASP.NET
Поддержка многопоточности STA в среде ASP.NET довольно ограничена.В частности, только оригинальная технология ASP.NET WebForms поддерживает многопоточность STA напрямую через его реализацию обработчика страниц STA или то, что вы можете знать как режим ASPCOMPAT.Для WebForms запустить компоненты STA так же просто, как указать атрибут ASPCOMPAT в теге @Page:
<%@ Page Language="C#" AspCompat="true" %>
, который запускает страницу в режиме STA.Удаление выполняется в режиме MTA.Простой.
STA для не поддерживающих ASP.NET Technologies
Только WebForms поддерживает STA изначально
- ASP.NET HttpHandlers
- Веб-службы ASMX
- ASP.NET MVC
- Веб-службы WCF
- Веб-API ASP.NET
Компоненты STA - это боль в заднице.Я чувствую вашу боль: -)
Хорошая ссылка:
https://weblog.west -wind.com / posts / 2012 / Sep / 18 / Создание-STA-COM-совместимый-ASPNET-applications # STAfornonsupportingASP.NETTechnologies