Czy to w ogóle ważne pytanie? Mam aplikację .NET dla systemu Windows, która korzysta z MSTDC i zgłasza wyjątek:
System.Transactions.TransactionManagerCommunicationException: Dostęp sieciowy dla Menedżera transakcji rozproszonych (MSDTC) został wyłączony. Włącz usługę DTC dla dostępu do sieci w konfiguracji zabezpieczeń usługi MSDTC za pomocą narzędzia administracyjnego usług składowych ---> System.Runtime.InteropServices.COMException (0x8004D024): Menedżer transakcji wyłączył obsługę transakcji zdalnych / sieciowych. (Wyjątek od HRESULT: 0x8004D024) w System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 propgationTokenSize, Byte [] propgationToken, IntPtr managedIdentifier, Guid & transactionIdentifier, OletxTransactionIsolationLevel & Transaction Isolation ....
Postępowałem zgodnie z przewodnikiem Kbalertz, aby włączyć usługę MSDTC na komputerze, na którym jest zainstalowana aplikacja, ale błąd nadal występuje.
Zastanawiałem się, czy to problem z bazą danych? Jeśli tak, jak mogę to rozwiązać?
źródło
Odpowiedzi:
Użyj tego w przypadku systemu Windows Server 2008 R2 i Windows Server 2012 R2
Kliknij przycisk Start , kliknij polecenie Uruchom , wpisz dcomcnfg, a następnie kliknij przycisk OK, aby otworzyć Usługi składowe .
W drzewie konsoli kliknij, aby rozwinąć Usługi składowe , kliknij, aby rozwinąć Komputery , kliknij, aby rozwinąć Mój komputer , kliknij, aby rozwinąć Koordynator transakcji rozproszonych, a następnie kliknij Lokalna usługa DTC .
Kliknij prawym przyciskiem myszy Lokalny DTC i kliknij Właściwości, aby wyświetlić okno dialogowe Właściwości Lokalnej usługi DTC .
Kliknij kartę Bezpieczeństwo .
Zaznacz pole wyboru „Network DTC Access” .
Na koniec zaznacz pola wyboru „Zezwalaj na przychodzące” i „Zezwalaj na wychodzące” .
Kliknij Zastosuj , OK .
Pojawi się komunikat o ponownym uruchomieniu usługi.
Kliknij OK i to wszystko.
Źródła: https://msdn.microsoft.com/en-us/library/dd327979.aspx
Uwaga: czasami zapora sieciowa na komputerze lokalnym lub serwerze może przerwać połączenie, więc upewnij się, że utworzyłeś reguły „Zezwalaj na przychodzące” i „Zezwalaj na połączenia wychodzące” dla
C:\Windows\System32\msdtc.exe
źródło
msdtc.exe
to:c:\windows\system32\msdtc.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
. Więcej informacji o nieruchomościach tutaj .Czy w ogóle potrzebujesz usługi MSDTC? Eskalacja, której doświadczasz, jest często spowodowana tworzeniem wielu połączeń w ramach jednego TransactionScope.
Jeśli go potrzebujesz, musisz go włączyć zgodnie z opisem w komunikacie o błędzie. Na XP:
źródło
Odkryłem, że najlepszym sposobem debugowania jest użycie narzędzia Microsoft o nazwie DTCPing
Miałem problemy z taryfą w naszej starej sieci firmowej i mam kilka wskazówek:
Z mojego doświadczenia wynika, że jeśli DTCPing jest w stanie skonfigurować połączenie DTC zainicjowane przez klienta i zainicjowane z serwera, Twoje transakcje nie są już problemem.
źródło
Można tu również zobaczyć , jak włączyć usługę MSDTC z poziomu services.msc Panelu sterowania.
źródło
Usługa MSDTC musi być włączona w obu systemach, zarówno na serwerze, jak i na kliencie.
Upewnij się również, że między systemami nie ma zapory, która blokuje RPC.
DTCTest to fajna aplikacja, która pomaga w rozwiązywaniu innych problemów.
źródło
@Dan,
Tylko transakcje rozproszone - te, które obejmują więcej niż jedno połączenie. Upewnij się podwójnie, że otwierasz tylko jedno połączenie w ramach transakcji i nie dojdzie do eskalacji - wydajność również będzie znacznie lepsza.
źródło