Main /

Web Config Aendern

Allgemein

Knowledge Base

Virtualisierung Emulation

Technik und Wissen

Community

Privat

%center%[[http://validator.w3.org/check?uri=referer|http://www.w3.org/Icons/valid-xhtml10.png]]%%

Web Config Aendern

In einem FeatureReceiver? die Web.Config ändern (MOSS 2007, WSS 3.0)

Oft kommt es vor dass man in einem selbst entwickelten EventHandler Konfigurationseinstellungen lesen möchte. Dafür eignet sich z.B. die configuration/appSettings-Sektion, wie z.b.

<configuration>
        <appSettings>
            <add key="MyURL" value="http://meine.tolle.url.de" />
        </appSettings>
</configuration>

die man sehr leicht auslesen kann:

string setting = ConfigurationSettings.AppSettings["MyURL"];

Das Ganze funktioniert auch für Event Handler. Nach der Installation der Solution sind aber die benötigten Keys noch nicht gesetzt. Um dem Admin zu ersparen dies von Hand zu tun, um dem EventHandler? brauchbare default-Werte mitzugeben und um die eigene Assembly unter SafeControls einzutragen kann man die web.config im FeatureActivated Event abhandeln:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{

   SPSecurity.RunWithElevatedPrivileges(delegate()
   {

      try
      {

         Trace.WriteLine("Try to modify web.config");
         SPWebApplication myWebApp = ((SPWeb)properties.Feature.Parent).Site.WebApplication;

         WebConfigModifier mod = new WebConfigModifier(myWebApp, OwnerString);

         mod.AddModification(
            "SafeControl[@Assembly='Elsni.WorlsdBestProgram, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7639c2c71f2f003']",
            "configuration/SharePoint/SafeControls",
            "<SafeControl Assembly='Elsni.WorlsdBestProgram, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7639c2c71f2f003' Namespace='GFA.UniversalListSyncSolution' TypeName='*' Safe='True' />"
         );

         mod.AddModification(
            "add[@key='PropertiesSiteUrl']",
            "configuration/appSettings",
            "<add key=\"PropertiesSiteUrl\" value=\"http://iei-developersy/sites/gfaadmin/\" />"
         );

         mod.Update();
         Trace.WriteLine("Done.");
      }
      catch (Exception ex)
      {
         Trace.WriteLine("ERROR while activating feature: " + ex.Message);
      }
   }
   });
}
 

Beim daktivieren oder deinstallieren des Features sollte die web.config wieder aufgeräumt werden:

// -----------------------------------------------------------------------------
/// <summary>
/// Deactivate our web.config
/// </summary>
/// <param name="properties"></param>
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
   CleanupWebConfig(properties);
}


// -------------------------------------------------------------------------------------
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{
   CleanupWebConfig(properties);
}

// -------------------------------------------------------------------------------------
private void CleanupWebConfig(SPFeatureReceiverProperties properties)
{
   Trace.WriteLine("Cleaning up Web.Config");
   SPSecurity.RunWithElevatedPrivileges(delegate()
   {
      try
      {
         SPWebApplication myWebApp = ((SPWeb)properties.Feature.Parent).Site.WebApplication;
         WebConfigModifier mod = new WebConfigModifier(myWebApp, OwnerString);
         mod.RemoveModifications();
         mod.Update();
      }
      catch (Exception ex)
      {
         Trace.WriteLine("ERROR while deactivating feature: " + ex.Message);
      }
   });
}
Frische Änderungen (All) | Edit SideBar Zuletzt geändert am 17.07.2009 14:23 Uhr Seite Bearbeiten | Seitenhistorie
Powered by PmWiki