我在SharePoint 2010 Visual Web Part沙箱解决方案中使用第三方库。
我已按照此处https://msdn.microsoft.com/en-us/library/vstudio/ee231595(v=vs.120).aspx
的说明使用“高级”标签将程序集添加到包中然后我使用Visual Studio 2013将其部署到我的本地服务器场。
如果我将部署目标设置为WebApplication
错误2部署步骤“添加解决方案”中出错:这个 解决方案包含无效标记或无法部署的元素 作为沙盒解决方案的一部分。解决方案清单解决方案 '54d81981-d8ba-4eca-96a7-a766b4b7fbd1'验证失败,文件 manifest.xml,第4行,字符65:'DeploymentTarget'属性 无效 - 值“WebApplication”根据其无效 数据类型 'http://schemas.microsoft.com/sharepoint/:SolutionDeploymentTargetType'
如果我选择GlobalAssemblyCache,它可以运行但运行Web部件时会抛出此错误
发生了'System.IO.FileLoadException'类型的异常 CustomFormBuilder.dll但未在用户代码中处理 信息:无法加载文件或程序集 'KellermanSoftware.NET-SFTP-Library,Version = 4.5.0.0,Culture = neutral, PublicKeyToken = dccbd7ce7d6a58c0'或其依赖项之一。失败 授予最低权限请求。 (HRESULT的例外情况: 0x80131417)
完全例外
System.IO.FileLoadException未被用户代码Message = Can处理 不加载文件或程序集'KellermanSoftware.NET-SFTP-Library, Version = 4.5.0.0,Culture = neutral,PublicKeyToken = dccbd7ce7d6a58c0'或 其中一个依赖项。无法授予最低权限请求。 (来自HRESULT的异常:0x80131417)Source = CustomFormBuilder
FileName = KellermanSoftware.NET-SFTP-Library,Version = 4.5.0.0, Culture = neutral,PublicKeyToken = dccbd7ce7d6a58c0 StackTrace: 在CustomFormBuilder.VisualWebPart1.VisualWebPart1.Upload() 在CustomFormBuilder.VisualWebPart1.VisualWebPart1.ConfirmBtn_OnClick(Object 发件人,EventArgs e) 在System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) 在System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) 在System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 在System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 在System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
InnerException:System.Security.Policy.PolicyException 消息=无法获取所需的权限。 来源= mscorlib程序 堆栈跟踪: 在System.Security.SecurityManager.ResolvePolicy(证据证据,PermissionSet reqdPset,PermissionSet optPset,PermissionSet) denyPset,PermissionSet&否认,布尔检查执行权限) 在System.Security.SecurityManager.ResolvePolicy(证据证据,PermissionSet reqdPset,PermissionSet optPset,PermissionSet) denyPset,PermissionSet&否认,Int32& securitySpecialFlags,布尔值 checkExecutionPermission) 的InnerException:
答案 0 :(得分:1)
沙箱解决方案无法将DLL部署到任何位置(包括GAC)。错误是设计的。沙箱的目的是提供一种在SharePoint内部运行代码的安全方法,而不会危及整个服务器场的健康状况。沙盒解决方案可以由"用户"上传。沙箱中的任何代码都限于一组简化的SharePoint功能。
使用传统的完全信任代码解决方案,并通过您的环境中的SharePoint管理员进行部署。 Visual Webpart样本也应该在此模型中可用。
从MSDN中查看此参考资料:
https://msdn.microsoft.com/en-us/library/office/gg615464(v=office.14).aspx
组件 - 组装
指源代码为Microsoft Visual Studio沙盒解决方案项目一部分的程序集。 无法在沙盒解决方案中部署非SharePoint程序集。沙盒解决方案中的程序集将保留在解决方案包(.wsp)文件内的内容数据库中。调用时,它们将被解压缩并临时存储在前端Web服务器的文件系统中。有关更多信息,请参阅部署沙盒解决方案中的程序集在哪里?。
有关沙比氏溶液的更多有用信息