我有一个 ASCX 控件(此解决方案中不使用 WebParts),它通过Microsoft.Crm.Sdk
和提供的 API 询问 CRM 4 的数据Microsoft.Crm.SdkTypeProxy
。
该解决方案在部署到 Sharepoint 之前一直有效。
最初我收到以下错误:
[SecurityException: That assembly does not allow partially trusted callers.]
MyApp.SharePoint.Web.Applications.MyAppUtilities.RefreshUserFromCrm(String login) +0
MyApp.SharePoint.Web.Applications.MyApp_LoginForm.btnLogin_Click(Object sender, EventArgs e) +30
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
然后我尝试使用 SPSecurity.RunWithElevatedPrivileges 将调用代码包装在 ASCX 中:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// FBA user may not exist yet or require refreshing
MyAppUtilities.RefreshUserFromCrm(txtUser.Text);
});
但这导致了以下错误(我认为 RunWithElevatedPrivileges 无论如何都不适合这种事情,但有人建议这样做):
[SecurityException: Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed.]
MyApp.SharePoint.Web.Applications.MyApp_LoginForm.btnLogin_Click(Object sender, EventArgs e) +0
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
当我将 Sharepoint 站点中的信任级别提升到完全时,一切正常,但是我需要提出一个使用最小信任(或自定义最小信任)的解决方案。我还试图避免向 GAC 添加任何内容。有任何想法吗?
我假设在尝试从Microsoft.Crm.*
.