ILMerge与CRM插件和Sharepoint Online

ILMerge与CRM插件和Sharepoint Online,sharepoint,dynamics-crm,sharepoint-online,dynamics-crm-online,ilmerge,Sharepoint,Dynamics Crm,Sharepoint Online,Dynamics Crm Online,Ilmerge,我正在尝试通过nuget将两个SharePoint程序集合并到我的插件dll中。组件为: Microsoft.SharePoint.Client (v16.1) Microsoft.SharePoint.Client.Runtime (v16.1) 它们似乎成功地合并到我的单一插件dll中,如果我用JustDecompile检查dll,我可以看到所需的类等 调试插件时,抛出安全异常 Request for the permission of type 'System.Security.Per

我正在尝试通过nuget将两个SharePoint程序集合并到我的插件dll中。组件为:

Microsoft.SharePoint.Client  (v16.1)
Microsoft.SharePoint.Client.Runtime (v16.1)
它们似乎成功地合并到我的单一插件dll中,如果我用JustDecompile检查dll,我可以看到所需的类等

调试插件时,抛出安全异常

Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0
代码成功地跳过了位于Microsoft.SharePoint.Client dll中的“ClientContext()”的创建过程,但在到达Microsoft.SharePoint.Client.Runtime dll中的“new SharePointCredentials()”行时失败

    using (var srcContext = new ClientContext(url))
    {
        srcContext.Credentials = new SharePointOnlineCredentials(username, securePassword);

我无法理解为什么会发生这种情况。它是Dynamics 365 online和SharePoint online。提供给构造函数的凭据是正确的。任何指点都将不胜感激。我真的不想创建web服务而不是合并SharePoint DLL。

这几乎毫无疑问与调用的方法有关,该方法需要Dynamics 365 Online不允许的权限。这通常是在Dynamics 365 Online中运行的插件/工作中出现
System.Security.Permissions.SecurityPermission
错误的原因

这已经有很长一段时间了,但如果内存正常,SharePoint客户端库在Dynamics 365沙盒插件中无法工作(所有在线插件都在沙盒中)


除非您能找到一种方法在没有库的情况下使用进行调用,否则您必须创建一个web服务或(在我看来,如果可能的话,最好的解决方案是)使用Azure服务总线来处理执行。

这几乎毫无疑问与调用的方法有关,该方法需要Dynamics 365 Online不允许的权限。这通常是在Dynamics 365 Online中运行的插件/工作中出现
System.Security.Permissions.SecurityPermission
错误的原因

这已经有很长一段时间了,但如果内存正常,SharePoint客户端库在Dynamics 365沙盒插件中无法工作(所有在线插件都在沙盒中)


除非您能找到一种方法在没有库的情况下使用调用,否则您必须创建一个web服务或(在我看来,最好的解决方案是)使用Azure service Bus来处理执行。

正如Nick所说,不幸的是Sharepoint.client.dll会给您带来一个麻烦“System.Security.SecurityException:该程序集不允许部分受信任的调用方”错误,即使您使用ILMerge进行部署

这是来自沙盒的限制,在微软解决这个问题之前,我们无能为力

但就目前而言,最好的方法是执行旧式httprequest,如下所述:


祝您好运!

正如Nick所说,不幸的是,Sharepoint.client.dll将向您抛出“System.Security.SecurityException:该程序集不允许部分受信任的调用方”错误,即使您使用ILMerge进行部署

这是来自沙盒的限制,在微软解决这个问题之前,我们无能为力

但就目前而言,最好的方法是执行旧式httprequest,如下所述:


祝你好运!

谢谢你的输入。我最终将代码移动到Azure函数并从插件调用它。效果很好。谢谢你的输入。我最终将代码移动到Azure函数并从插件调用它。效果很好。