5

Jak mówi tytuł, szukam sposobu, aby odróżnić błędu spowodowanego przez mojego kodu lub podstawowej funkcjonalności CRM i błędem rzucone przez każdego niestandardowego wtyczki, które mogą być zainstalowane w systemie klienta.Czy istnieje sposób sprawdzenia, czy wyjątek MS CRM został zgłoszony przez wtyczkę?

Coś nieustannie padają ofiarą jest nasze klientów niestandardowych wtyczek firm trzecich, które albo są tworzone w domu lub zakupione od innego ISV. Rejestrują go w jednostce CRM, której dotykamy, a nawet w jednej z naszych jednostek w ostatnim przypadku. Próbujemy coś zrobić, wtyczka próbuje zrobić to, czego nie może. W najnowszym przykładzie wtyczka nie kodowała "poprawnie" po tym, jak umieściliśmy go w CRM. Wtyczka generuje błąd i CRM odsyła go do nas.

Jak mogę powiedzieć, że wtyczka jest winowajcą, bez marnowania godzin bada? Do tej pory widziałem tylko jedną firmę, która ułatwia identyfikację, wyrzucając ślad stosu wtyczek jako komunikat o błędzie.

edytuje dla jasności:

  • szukam programowym roztworze zmniejszyć czas potrzebny na to zidentyfikować problem jest zwyczaj plugin a nie nasz kod interakcji z ich CRM z Azure .
  • ja próbując wzmocnić naszą rejestrowanie błędów/obchodzenia się być mądry wystarczy, aby odróżnić.
  • Nawet jeśli nasz kod działa w 100%, ale wyzwala synchronicznego wtyczki na ogień i że wtyczki nie powiedzie, możemy uzyskać wyjątek od CRM.
  • Wszystko co robimy jest programowy poprzez SDK.
+0

Więc jest to awaria, co dzieje się, gdy plugin próbuje wykonać pewne działania, co powoduje kolejny plugin nie, co z kolei powoduje swoje wtyczki na niepowodzenie ? Czy jest to błąd występujący w przypadku wtyczki przed uruchomieniem wtyczki? – Daryl

+0

Nie jesteśmy technicznie "wtyczką" Mamy aplikację działającą na platformie Azure, która współdziała z systemem CRM klientów. Błąd pojawia się w wtyczce klienta, która odfiltrowuje nas z powrotem, nawet jeśli osiągnęliśmy to, co próbowaliśmy, nadal otrzymujemy błąd. –

+0

Czy używasz SDK? – Daryl

Odpowiedz

2

Jedyne, co przychodzi na myśl, to włączenie śledzenia CRM. Poniższy link powinien wyjaśniać, jak to zrobić w programie Microsoft Dynamics CRM.

http://support.microsoft.com/kb/907490

+1

Przepraszam, powinienem był wspomnieć powyżej. Szukam programowego rozwiązania, które może być zautomatyzowane i częścią naszego rejestrowania błędów. Przejście przez klienta i włączenie śledzenia to część godzin śledztwa, które próbuję ograniczyć. –

1

Gdy istnieje wyjątek spowodowany przez Plugin w tym zdjęciu: enter image description here

można pobrać plik dziennika, wewnątrz łatwo można dowiedzieć się, jakie wtyczki spowodowała wyjątek, należy sprawdzić na przykład tego log:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: StupidPluginDetail: 
// ... other details 
[StupidPlugin: StupidPlugin.ExamplePlugin] 
[bda9ad85-c4a5-e211-bc00-78e7d162ee67: StupidPlugin.ExamplePlugin: Create of orderclose] 
</TraceText> 
</OrganizationServiceFault> 
+0

Nawiązujemy interakcję z CRM klientów za pomocą pakietu SDK, więc nie otrzymujemy tego komunikatu. –

0

To nie byłby zalecany do stosowania w środowisku produkcyjnym, ale byłoby bardzo korzystne dla środowiska testowego. Ilekroć operacja CRUD nie działa przy użyciu SDK, można programowo wyłączyć wszystkie wtyczki i spróbować wykonać tę samą operację. Jeśli się powiedzie, włącz wtyczki pojedynczo, aż się nie powiedzie. Wtedy będziesz w stanie określić, która wtyczka jest przyczyną problemu lub czy w ogóle nie jest wtyczką.

1

Spójrz na Detail.TraceText właściwość wyjątku zwróconego przez usługę. Nie udało się uzyskać pełną ślad stosu, ale wrócił pewne informacje wskazujące, gdzie poszło źle:

Mario.CRM.TestOrg.Plugins: Mario.CRM.TestOrg.Plugins.ContactPreUpdate

[ 5ee31a9e-3558-e211-adeb-00155d014401: Mario.CRM.TestOrg.Plugins.ContactPreUpdate: Aktualizacja Kontakt]

przykładowy fragment kodu

try 
{ 
    //create service proxy and call service 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(((System.ServiceModel.FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)(ex)).Detail.TraceText); 
} 
+0

Będę musiał się temu przyjrzeć, wygląda interesująco. –

Powiązane problemy