Можно ли настроить службу REST (WCF) для запуска как STA вместо MTA ?
Этот подход необходим для запуска устаревших COM-объектов. Чтобы настроить веб-службы ASMX для работы в качестве STA вместо MTA, существует обходной путь, который использует HTTPHandler для принудительной работы веб-службы в качестве STA.
В статье Джеффа Просиза http://msdn.microsoft.com/en-us/magazine/cc163544.aspx, подробно описывается обходной путь и способы его применения. Применение того же HTTPHandler к службе WCF на основе REST (с использованием Создать новую службу данных ADO.NET в Visual Studio) приводит к ошибке в момент вызова WebServiceHandlerFactory (ему передается HTTPContext, URL и т. д.).
Обработчик работает для веб-служб ASMX, и я могу добавить WebMethod, который возвращает модель потоков в виде STA. Однако даже после установки ASPCompatibility (как в web.config
, так и на уровне класса) пользовательский HTTPHandler всегда выдает ошибку в одной и той же точке при попытке использовать службу REST. Я не настроил никаких конечных точек, так как я использую базовую службу REST с парой методов «оператор службы». Ошибка:
Невозможно привести объект типа 'System.Web.Compilation.BuildResultCustomString'.
набрать 'System.Web.Compilation.BuildResultCompiledType'.