Dynamics CRM 365(联机)插件异常环境使用Azure Application Insights的权限

Dynamics CRM 365(联机)插件异常环境使用Azure Application Insights的权限,azure,plugins,dynamics-crm,microsoft-dynamics,Azure,Plugins,Dynamics Crm,Microsoft Dynamics,我正在尝试使用插件和Azure应用程序洞察跟踪自定义事件。构建插件时,我使用MSBuild.ILMerge.Task将Application.Insights.dll与插件程序集合并。以下是我想要的步骤 按照以下步骤进行合并: 我遇到的问题是,当我尝试实例化遥测客户端时: var telemetryClient = new TelemetryClient(); 我得到这个错误: Request for the permission of type System.Security.Permis

我正在尝试使用插件和Azure应用程序洞察跟踪自定义事件。构建插件时,我使用MSBuild.ILMerge.Task将Application.Insights.dll与插件程序集合并。以下是我想要的步骤 按照以下步骤进行合并:

我遇到的问题是,当我尝试实例化遥测客户端时:

var telemetryClient = new TelemetryClient();
我得到这个错误:

Request for the permission of type System.Security.Permissions.EnvironmentPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
我已尝试使用安全属性授予权限:

[EnvironmentPermission(SecurityAction.Assert, Unrestricted = true)]
也试过了

[PermissionSet(SecurityAction.Assert, Name = "FullTrust")]
但似乎什么都不管用。如有任何想法/建议,将不胜感激。
提前谢谢。

简单的回答是你不能这样做。当前版本的Application Insights不支持CRM沙盒插件上的代码限制

这已作为问题报告并解决:

我删除了这段代码,它解决了它试图解决的问题,即某些机器信息调用。它仍然会抛出一个错误,因为它希望能够尝试读取文件系统,但它不能

Application Insights设计为在应用程序的基础级别实现(通常,但不总是web应用程序)。在创建自定义插件和工作流活动时,您编写的代码不是该代码。它是基础级应用程序的插件,该基础级应用程序不实现应用程序洞察

也就是说,在沙盒插件中不需要太多应用程序洞察。Dynamics CRM已经跟踪了沙盒插件的插件执行统计信息,可以通过高级查找查看这些信息


对于详细的跟踪,尤其是异常跟踪,您在插件中有
ITracingService

如果您仍然希望从插件触发应用程序洞察,可以通过rest服务。在和rest服务中编写所有应用程序细节逻辑,并将其部署到Azure中。然后通过插件代码触发rest服务并传递所需的参数

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();
}
}
谢谢,
Dilip

我们尝试将其作为概念的证明,但它没有得到建筑师的批准(出于各种原因)。微软为AppInsights提供了一个只读的rest服务,希望在某个时候它能包括写操作。目前这项工作已被搁置。