2008-12-17 56 views
2

我有拋出以下異常定製的SharePoint Web部分:的SharePoint的WebPart安全例外

System.Security.SecurityException: Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed. 
    at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode) 
    at Waverly.SharePoint.Features.WebParts.SearchesListWebPart.Render(HtmlTextWriter writer) 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
Microsoft.SharePoint.Security.SharePointPermission 
The Zone of the assembly that failed was: 
MyComputer 

我的理論是,SharePoint不能很好的信任級別運行的網絡的一部分,但我有困難搞清楚如何調試這個問題。任何人有任何經驗調試這樣的事情?

回答

4

您有幾種選擇。首先是將您的程序集安裝到GAC中。然後它會得到充分的信任,但是你必須將它安裝在GAC中,強名稱等等。第二種方法是進入web.config並將其添加到可信列表中。 This articlethis one將幫助你走上這條道路。

第三個選項是將程序集放在C:\ inetpub \ wwwroot \ wss \ VirtualDirectories [port] _app_bin文件夾中。這在全局SharePoint配置中設置爲完全信任那裏的任何程序集。你可能想首先嚐試一下,看看它是否有幫助,如果是的話,使用其他兩種方法之一(因爲從技術上講,這是一個無證的功能,可以改變)

編輯:好的,有幾件事情你可以試試。嘗試顛覆整體信任級別,如in this article所示。基本上查找:

<信任級別=「全」 originUrl =「」/>

如果成功,則表明你是靠不受信任的DLL。請注意,您不希望信任級別爲Full,因爲這意味着任何Web部件都具有完全信任。

這有幫助嗎?

+0

GAC-dll是似乎能夠工作的唯一東西 - 它確實有效。 – sestocker 2009-01-06 19:37:09

2

這很瘋狂。 我不能在Web部件執行以下行:

using (SPSite site = new SPSite(parentWebUrl)) 

但是我無法通過Web部件執行。

它引發了一個類似的異常,儘管該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 

拋出異常。

這是什麼問題?

解決方案

事實證明,由於各種行動的WebPart構造發生很多次這樣的錯誤發生thses。您幾乎無法在那裏與SharePoint對象模型進行交互。

把代碼移到其他地方,它可以工作。我將我的代碼移到了CreateChildControls,它工作。