2017-02-07 3 views
0

Ich versuche, benutzerdefinierte Ereignisse mit einem Plugin und Azure Application Insights zu verfolgen. Wenn ich das Plugin erstelle, verwende ich MSBuild.ILMerge.Task, um die Application.Insights.dll mit meiner Plugin-Assembly zusammenzuführen. Hier sind die Schritte, die ich folgte die Zusammenführung zu tun: http://dynamicscrmcoe.com/il-merge-dynamics-crm-plugins/Dynamics CRM 365 (Online) Plugin Ausnahme EnvironmentPermission mit Azure Application Insights

Das Problem, das ich habe, ist, dass, wenn ich versuche, die Telemetrie-Client zu instanziiert:

var telemetryClient = new TelemetryClient(); 

ich diesen Fehler:

Request for the permission of type System.Security.Permissions.EnvironmentPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

ich habe die Gewährung von Berechtigungen versucht, von den Sicherheitsattributen:

[EnvironmentPermission(SecurityAction.Assert, Unrestricted = true)] 

und haben auch

versucht
[PermissionSet(SecurityAction.Assert, Name = "FullTrust")] 

Aber nichts scheint zu funktionieren. Irgendwelche Ideen/Ratschläge würden geschätzt werden. Vielen Dank im Voraus.

Antwort

1

Die kurze Antwort ist, dass Sie dies nicht tun können. Die aktuelle Version von Application Insights unterstützt die Codebeschränkungen für CRM-Sandbox-Plug-ins nicht.

Dies wurde gemeldet und als Problem behoben: https://github.com/Microsoft/ApplicationInsights-dotnet/issues/416.

Ich habe diesen Code heruntergezogen und löst das Problem, das versucht wurde zu lösen, d. H. Bestimmte Maschineninformationsanrufe. Es wird weiterhin ein Fehler ausgegeben, da erwartet wird, dass das Dateisystem gelesen werden kann - was nicht möglich ist.

Application Insights wurde entwickelt, um auf der Basisebene einer Anwendung implementiert zu werden (normalerweise, aber nicht immer, eine Webanwendung.) Der Code, den Sie beim Erstellen von benutzerdefinierten Plugins und Workflowaktivitäten schreiben, ist nicht dieser Code. Es ist ein Plug-in für eine Anwendung auf Basisebene, und diese Anwendung auf Basisebene implementiert keine Application Insights.

Das heißt, es gibt nicht viel Bedarf für Application Insights in einem Sandbox-Plugin. Dynamics CRM verfolgt bereits Plug-in-Ausführungsstatistiken für das Sandbox-Plug-in, die über die erweiterte Suche angezeigt werden können.

Advanced Find Search for Plugin Statistics

Für detaillierte Verfolgung, insbesondere für die Ausnahmeverfolgung, haben Sie die ITracingService innerhalb des Plugins.

0

Wenn Sie Application Insight immer noch über Ihr Plug-In auslösen möchten, ist eine Möglichkeit über den Rest-Service möglich. Schreiben Sie alle Logik für die Anwendungsübersicht in den Dienst und stellen Sie ihn dort wieder her, und stellen Sie ihn im Azure bereit. Dann durch Plugin-Code den Rest-Service auslösen und die erforderlichen Parameter übergeben.

var uri = new Uri("learningportalservices.azurewebsites.net/.../success"); 
var request = WebRequest.Create(uri); 
request.Method = WebRequestMethods.Http.Get; 
request.ContentType = "application/json"; 
using (var response = request.GetResponse()) 
{ 
using (var reader = new StreamReader(response.GetResponseStream())) 
{ 
string result = reader.ReadToEnd(); 
} 
} 

Danke, Dilip

+0

Wir haben versucht, das als Proof of Concept und es funktioniert, aber es wurde nicht von dem Architekten (aus verschiedenen Gründen) zugelassen. Microsoft hat einen Lese-Rest-Service für App-Einsichten, hoffentlich wird es irgendwann Schreiboperationen beinhalten. Für jetzt wurde dies auf Eis gelegt. – noobie

Verwandte Themen