DotNetNuke UserController.GetUser (PortalId, UserId, False) внутри TransactionScope создает исключение TransactionAbortedException - PullRequest
0 голосов
/ 10 июня 2010

DotNetNuke UserController.GetUser (PortalId, UserId, false) или UserController.ValidateUser (...) внутри TransactionScope вызывает TransactionAbortedException, а внутреннее исключение - TransactionPromotionException.Симптомы такие же, как у этого .

Может ли кто-нибудь предложить мне решение этой проблемы?Большое спасибо!

using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
    {
        DotNetNuke.Entities.Users.UserInfo ui = DotNetNuke.Entities.Users.UserController.GetUser(PortalId, UserId, false);         
        ts.Complete();
    }

1 Ответ

0 голосов
/ 06 июня 2011

По умолчанию DotNetNuke использует поставщика членства ASP.NET 2.0. Как вы указали , Membership.GetUser () открывает другое соединение с базой данных, что вызывает исключение внутри TransactionScope.

Если вы хотите использовать GetUser () внутри TransactionScope, вам нужно будет либо включить MSDTC, либо использовать SQL Server 2008. SQL 2008 допускает несколько соединений в одной TransactionScope, если соединения с одной и той же СУБД не открыты. в то же время.

Смотрите также:

TransactionScope автоматически переходит в MSDTC на некоторых машинах?

...