Недавно мы столкнулись с проблемой при переносе нашего веб-приложения с Windows Server 2003 и IIS6 на 32-разрядную версию Windows Server 2008 Standard и IIS7.
Веб-приложение - это классическое приложение ASP, которое использует ряд устаревших компонентов COM + для некоторых операций с базой данных. Сервер базы данных - это БД Oracle 10g, работающая в Linux, а клиент Oracle также 10g.
Проблема в том, что при попытке выполнить вставку / обновление / удаление в транзакции выдается исключение, говорящее о том, что транзакция не может быть зачислена в указанный координатор транзакции. Чтение запросов в порядке. Команды DML также работают нормально, если компоненты COM + настроены так, что не требуют транзакции, но это не совсем вариант для нашей системы.
Я знаю, что MSDTC настроен правильно, так же как и компоненты COM + с точки зрения настроек безопасности и открытых портов (брандмауэр полностью отключен), потому что на том же сервере у нас также есть служба Windows, использующая те же компоненты COM + и тот работает нормально. Я даже зашел так далеко, что предоставил права и разрешения почти каждой учетной записи пользователя на этом сервере как для компонентов MSDTC, так и для компонентов COM +, поэтому независимо от того, какой идентификатор потока выполняет код в IIS, я бы сказал, что он должен быть в значительной степени покрыт. тем.
Уже несколько дней пытаюсь разобраться в этом, и все, что мы могли найти в интернете, это то, что мы уже освещали, например, проблемы с настройкой DTC и брандмауэром. Не уверен, что еще попробовать, особенно, поскольку приложение службы Windows работает нормально при той же настройке сервера.