我在帐户实体上有一个简单的帖子创建插件,它使SharePoint中的子网站与已创建的帐户的名称相同。
我使用了SharePointOnlineCredentials
程序集中的Microsoft.SharePoint.Client.Runtime
类来登录SharePoint实例。
只要插件设置为isolation mode = none
,插件就可以在内部部署实例上运行。
当我在Sandbox隔离模式下运行插件时,我收到以下错误(在线版本错误)。
我想在SharePoint的在线实例上运行此插件,但我相信,我无法使用隔离模式=无法在线运行,是否有另一种在在线CRM实例上使用此SharePoint程序集运行代码的方法?
消息:创建,方法:ExecutePluginLogic异常: System.Security.SecurityException:请求类型的权限 'System.Security.Permissions.SecurityPermission,mscorlib, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 失败。在System.Security.CodeAccessSecurityEngine.Check(Object 需求,StackCrawlMark& stackMark,Boolean isPermSet)at System.Security.CodeAccessPermission.Demand()at System.Net.AuthenticationManager.Register(IAuthenticationModule 在
处的authenticationModuleMicrosoft.SharePoint.Client.SharePointOnlineAuthenticationModule.EnsureRegistered() 在 Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor(字符串
的用户名,SecureString密码)MWLSPXRMToolkitOnline.Plugins.AccountCreate.ExecutePluginLogic(的IServiceProvider serviceProvider)at MWLSPXRMToolkitOnline.Plugins.BasePlugin.Execute(的IServiceProvider serviceProvider)
失败的行动是:需求的类型 失败的第一个许可是:
System.Security.Permissions.SecurityPermission The Zone of the 失败的程序集是:MyComputer
答案 0 :(得分:1)
不明智,在沙盒模式下运行时,您不能包含对其他程序集的引用。您可以尝试使用ILMerge将组件组合在一起,但如果我是你,我会采取不同的方法,例如将工作推向外部Web服务。
答案 1 :(得分:0)
如果使用ILMerge将程序集组合在一起(根据James Wood的建议,因为在沙盒模式下运行时不能包含引用),请在ILMerge中使用'/ copyattrs'参数。 如果您已使用NuGet包在项目中安装ilMarge:
在解决方案中编辑文件:ILMerge.props 更改参数:
<ILMergeAllowMultipleAssemblyLevelAttributes>true</ILMergeAllowMultipleAssemblyLevelAttributes>
<ILMergeCopyAttributes>true</ILMergeCopyAttributes>