Como encontrei o problema de processamento de transações no serviço da web da última vez, acidentalmente fiz uma descoberta interessante sobre a configuração de inscrição da cadeia de conexão do OracleConnection durante a depuração do programa.
Eu li um artigo antes, mas não consigo lembrar o que era. O artigo dizia que é melhor definir o enlist como falso. Naquela época, não entrei em detalhes sobre por que deveria ser definido como falso. meu programa, enlist=false foi escrito diretamente. Só agora descobri que existe uma relação sutil entre o cenário do alistamento e o processamento das transações.
Os gerentes de transações geralmente usam dois métodos de gerenciamento, um é chamado Lightweight Transaction Management, conhecido como LTM, e o outro é chamado oleX TM. Na submissão de fase simples, geralmente é usado LTM, enquanto no processamento de transações distribuídas, geralmente é usado 2PC, portanto o método usado é oleX TM.
Se enlist=false, significa que as transações subsequentes não serão registradas na transação atual, portanto a transação atual não se tornará a raiz da transação. Se o processamento de transações distribuídas for usado no programa, ele poderá não ser executado corretamente (não testei isso). Neste momento, o programa diz ao TM para usar o LTM para gerenciar.
Se enlist=true, então o processo informa ao TM que ele precisa ser gerenciado usando oleX TM. O gerenciamento de transações distribuídas será habilitado automaticamente neste momento, portanto, se enlist=true estiver definido na string de conexão, se o banco de dados oracle for usado, então o plano de fundo irá Ao chamar oramts.dll, se o serviço MTS for Oracle não estiver instalado no ambiente de desenvolvimento, ele avisará que oramts.dll não pode ser encontrado. Você pode baixar o pacote de instalação deste serviço no site da Oracle. Não sei por que a Oracle não fornece um pacote de instalação separado, mas faz o download junto com o odac.
O que acontecerá se você não configurar o alistar-se? Isso depende se o seu programa usa transações distribuídas ou processamento geral de transações. O TM reagirá automaticamente de acordo com a solicitação do programa.
Conclusão: o enlist tem certo controle sobre o registro das transações. Se minha descrição estiver errada, por favor me ajude a corrigir.
Endereço do link: http://yanrongpi.cnblogs.com/archive/2006/07/13/450189.html