У меня есть элемент управления ASCX (в этом решении веб-части не используются), который запрашивает данные CRM 4 через API, предоставляемый Microsoft.Crm.Sdk
и 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
Затем я попытался обернуть вызывающий код в ASCX с помощью SPSecurity.RunWithElevatedPrivileges:
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.*
.