2009-05-15 5 views
0

Wir haben eine SharePoint-Anwendung, in der der Benutzer die web.config durch Aktivieren einer Funktion ändern können soll. Die Anwendung wurde erweitert, so dass wir eine Webanwendung auf AD-Basis und eine andere verwenden, die formularbasierte Authentifizierung (FBA) verwendet, wobei die FBA-Anwendung die "Haupt" -Benutzeranwendung ist.Ändern der SharePoint App Web.config-Datei mit formularbasierter Authentifizierung

Wir verwenden die SPWebConfigModification-Klasse (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx), um in die web.config für Einstellungen zu schreiben, die wir für die aktivierte Funktion benötigen.

Dies funktioniert gut auf der AD-basierten Seite der Dinge. Wenn wir dies jedoch in der FBA-basierten Webanwendung ausführen, erhalten wir einen Fehler, da der Websitesammlungsadministrator für die FBA-Site keinen Zugriff auf die Datei web.config auf dem Server hat. Da sie ein FBA-Benutzer sind, können wir ihnen auch keine Rechte auf dem Server geben.

Hat jemand in das hineingeraten? Hat jemand irgendwelche Umwege? Ich nehme an, ich könnte versuchen, die Anwendung zu haben, um die web.conifg über die Befehlszeile zu aktualisieren, aber ich würde wirklich gerne von dem Benutzer getan werden, wenn sie die Funktion aktivieren. Ich könnte auch versuchen, Sicherheitsrechte auf der web.config zu lockern, aber das ist ein schlechter Weg, um zu starten.

Danke! John

+0

Warum ändern Sie die Datei web.config zur Laufzeit? Wenn Sie nur ein Schlüsselwertpaar (d. H. AppSettings) festlegen möchten, sollten Sie die Einstellungen für Eigenschaftenbeutel in SharePoint untersuchen. die Datei web.config Modyfing ist schlecht aus 2 Gründen 1) Es wird der IIS-Anwendungspool möglicherweise zurückgesetzt (also einen winzigen verursacht (oder auf der Größe von Ihnen Websitesammlungen abhängig) Ausfall. 2) Web .config-Änderungen werden über einen Zeitgeberauftrag angewendet (der Kontext des Benutzers, der die Änderung vornimmt, ist irrlevent). – Jeff

Antwort

0

Eine Alternative wäre, eine Komponente zu schreiben, die es tut. Dies kann ausgelöst werden, indem eine Funktion aktiviert oder ein Webpart aktualisiert wird.

Das würde bedeuten, dass Sie die Sicherheit nicht lockern müssen, oder über die Befehlszeile.

+0

Würde die Komponente nicht im Kontext des Benutzers ausgeführt, wenn ich einen Verweis auf SPWeb bekomme? Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, mit erhöhten Rechten für den Dateizugriff auf die web.config –

+0

zu arbeiten. Etwas in der Art: http://boris.gomiunik.net/2009/04/spsecurityrunwithhelevatedprivileges-and-access-denied- error-on-event-receiver/ Dies funktioniert möglicherweise direkt. – Bravax

+0

Ich meine mit SPSecurity.RunWithElevatedPrivileges funktioniert möglicherweise in Ihrem aktuellen Code. – Bravax