ApplyWebConfigModifications nefunguje v Farm

hlasů
1

Takže, já jsem se snaží nasadit funkci webové aplikace, která aktualizuje web.config pomocí sbírku WebConfigModifications. Tam je spousta informací o tom to včetně všech otázek budete narazit, takže jsem velmi jistý v kódu, ale bez ohledu na to, co se snažím config prvky nejsou přidány do webového config. Tato metoda funguje spolehlivě ve vývojovém jednom serverovém prostředí, ale neaktualizuje na farmě.

Žádné chyby, žádné informace o protokolu žádné zprávy událostí .... nic směřovat k proč to nebude aktualizovat:

SPWebConfigModification appSettingModification = nový SPWebConfigModification ();
appSettingModification.Name = ni [@key = \ Key \ ] [ 'hodnota = \ Hodnota \ ];
appSettingModification.Path = konfigurace / appSettings;
appSettingModification.Owner = Majitel;
appSettingModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
appSettingModification.Value = __appSettingResource;

if (removeModification)
{
app.WebConfigModifications.Remove (appSettingModification);
}
Jinak
{
app.WebConfigModifications.Add (appSettingModification);
}
App.Update ();
app.Farm.Services.GetValue <SPWebService> () ApplyWebConfigModifications ().

==============================

UPRAVIT

Chtěl jsem se přidat k tomu vychází z návrhu by Drax, aby odrážela způsob ApplyWebModifications. Tato metoda je na SPWebService, který je v Microsoft.SharePoint.Administration názvů v sestavě Microsoft.SharePoint.

Jedním z problémů s použitím této metody je, že všechny soubory web.config jsou aktualizovány na farmě, i když jsou skutečně použité žádné úpravy. To způsobí, že aplikace bazény, které mají být recyklovány, i když nemáte v úmyslu aktualizovat webové konfigurace. Reflexe ukazuje, proč se to děje a je to velmi nepříjemné.

Uvnitř metody je krátký Foreach:

foreach (aplikace SPWebApplication v this.WebApplications)
{
application.ApplyWebConfigModifications ();
}

Je průchozí každé z webových aplikací a voláním VNITŘNÍ metody ApplyWebConfigModifications na objekty webových aplikací. V případě, že právě udělal tuto metodu veřejnosti pak bychom byli schopni volat metodu samostatně bez vlivu na recyklaci app fondu na webových aplikací, které nejsou ovlivněny našimi aktualizace. Jen říct

Položena 09/12/2008 v 16:53
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Tento problém je chyba. Myslím.

SPWebService.ApplyWebConfigModifications()

public void ApplyWebConfigModifications()
{
  if (base.Farm.TimerService.Instances.Count > 1)
  {
    SPWebConfigJobDefinition definition = new SPWebConfigJobDefinition(this);
    definition.Schedule = new SPOneTimeSchedule(DateTime.Now);
    try
    {
      definition.Update();
      return;
    }
    catch (Exception exception)
    {
      if (exception is SPDuplicateObjectException)
      {
        throw new InvalidOperationException(SPResource.GetString("WebconfigModificationAlreadyRunning", new object[0]), exception);
      }
      throw;
    }
  }
  string strMessage = string.Empty;
  **foreach (SPWebApplication application in this.WebApplications)**
  {
    ULS.SendTraceTag(0x38386866, ULSCat.msoulscat_WSS_Topology, ULSTraceLevel.Medium, "Apply web config modifications to web app {0} ", new object[] { application.GetResponseUri(SPUrlZone.Default).ToString() });
    try
    {
      application.ApplyWebConfigModifications();
Odpovězeno 25/01/2011 v 01:44
zdroj uživatelem

hlasů
0

Problém je pravděpodobně v ve vaší výzvě ApplyWebCOnfigModifications () namísto:

app.Farm.Services.GetValue () ApplyWebConfigModifications ().

použití:

app.Farm.Servers.GetValue <SPWebService> () ApplyWebConfigModifications ().

Druhým kodexem skutečně požaduje službu odpovědný za aktualizaci web.config souborů.

Sidenote: Tento kód bude skutečně otevřít všechny soubory webconfig ve všech webapplications instalovaných na serveru / farmě :), ale to bude aktualizovat ty akorát. Pokud budete používat reflektor skenovat tuto metodu uvidíte nějaký pěkný příklad využití smyčky foreach :)

Odpovězeno 09/12/2008 v 17:30
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more