2009-08-03 15 views
0

Ich benutze ein portalsitemapprovider Objekt, um meine Navigation Server Kontrolle zu erstellen.PortalSiteMapprovider Code Access Sicherheitsanforderungen

Ich habe Sharepoint Objektmodell Zugriff und Identitätswechsel Rechte in den Steuerelementen CAS zugeordnet. Trotzdem kann ich die Kindknoten des Wurzelknotens der Sitemap nicht abrufen, sie geben nur einen Fehler zurück.

Wenn ich die Webanwendung so ändere, dass sie unter voller Vertrauenswürdigkeit ausgeführt wird, kann ich die untergeordneten Knoten abrufen.

Also meine Frage ist, welche CAS-Richtlinien erforderlich sind, um vollständig auf Daten in der Sitemap-Provider-Objekt zugreifen, und wie komme ich auf den Stammknoten, aber nicht es Kinder derzeit ist?

Beispielcode:

PortalSiteMapProvider sp = PortalSiteMapProvider.WebSiteMapProvider; 
PortalSiteMapNode rootNode = (PortalSiteMapNode)siteProvider.RootNode; 
foreach (SiteMapNode node in rootNode.ChildNodes) 
{ 
    //this loop returns 1 item with title "Error" with no exception thrown. 
} 

Meine Versammlung hat folgende CAS-Anfragen:

[assembly: SharePointermission(SecurityAction.RequestMinimum, ObjectModel=true, Impersonate=true)] 

Mit approprite IPermission Einträgen in dem Bereitstellungsmanifest. Nach der Bereitstellung der Webanwendung wird web.config erwartungsgemäß auf die WSS_Custom-Vertrauensstufe aktualisiert.

Irgendwelche Ideen?

Dank

Antwort

1

Sie könnten versuchen, Reflektor zu verwenden. Dies sollte Ihnen die CAS-Berechtigungen für diese Klasse zeigen.

Oder verwenden Sie WSPBuilder, die Reflexion verwenden wird, um die CAS-Datei für Sie zu generieren. Ich empfehle diese Option, da Sie sich nicht mehr darum kümmern sollten, Ihre CAS-Dateien erneut zu bearbeiten.

+0

Nicht sicher, wie die CAS-Berechtigungen für eine Klasse im Reflektor angezeigt werden. Ich benutze WSPBuilder und es erstellt einen benutzerdefinierten CAS, aber es scheint nicht zu funktionieren! :( – Eriedor

+0

Navigieren Sie zu der Klasse und sehen Sie sich die Attribute an, die sie schmücken (sollte in der Nähe der obersten Zeile sein). –

+0

Ok, ich hatte einen Link und der Portalsitemapknoten hat eine Verbindungsanforderung für asphostingpermission.minimal (von wss_minimal abgedeckt) und eine Verbindungsanforderung für Sharepoint-Objekt (von meiner benutzerdefinierten Cas abgedeckt). Was ist seltsam ist, wenn CAS Ebenen nicht erfüllt werden sollte nicht die Assembly einfach nicht laden? (zB wenn ich Web-App-Vertrauensstufe zu wss_medium ändern wird die Assembly nicht geladen Warum lädt es die Versammlung fein, aber den Anruf ohne eine Sicherheitsausnahme, nur eine generische "Fehler". – Eriedor

Verwandte Themen