Это безумие.
Я не могу выполнить следующую строку в веб-части:
using (SPSite site = new SPSite(parentWebUrl))
Однако я могу выполнить его, не используя веб-части.
Это вызывает у меня аналогичное исключение, хотя DLL находится в GAC, плюс добавлены в safecontrols.
Exception: SecurityException
Message: Request failed.
Action: System.Security.Permissions.SecurityAction.Demand
Some stack trace:
at Microsoft.SharePoint.SPWeb.SPWebConstructor(SPSite site, String url, Boolean bExactWebUrl, SPRequest request)
at Microsoft.SharePoint.SPWeb..ctor(SPSite site, String url, Boolean bExactWebUrl)
at Microsoft.SharePoint.SPSite.OpenWeb()
at ....
Это также говорит, что
((System.Security.SecurityException)($exception)).Demanded
((System.Security.SecurityException)($exception)).DenySetInstance
((System.Security.SecurityException)($exception)).FailedAssemblyInfo
((System.Security.SecurityException)($exception)).FirstPermissionThatFailed
((System.Security.SecurityException)($exception)).GrantedSet
бросил исключение.
В чем проблема?
Решение
Оказывается, что часто такие ошибки возникают, потому что в конструкторе веб-частей происходят различные действия. Вы почти не можете взаимодействовать с объектной моделью SharePoint там.
Переместите код куда-нибудь еще, и он может работать. Я переместил свой код в CreateChildControls, и он работал.