2011-10-10 20 views
6

Possiedo diverse applicazioni Web che utilizzano pacchetti che utilizzano WebActivator. Sul mio computer locale con IIS 7.5 Express, tutto funziona correttamente se eseguo il test nelle configurazioni Release o Debug. Tuttavia, sul mio computer di produzione con IIS 7.5, WebActivator non viene effettivamente eseguito, quindi tutti i moduli non riescono a caricare e devo aggiungere nuovamente il codice nel file Global.asax.cs.Webactivator non funziona su IIS 7

Sono perplesso su dove iniziare a cercare: ho cercato su Google StackOverflow ma non ho incontrato nessuno con problemi simili. C'è qualcosa di esplicito che deve essere configurato per consentirne l'esecuzione?

Modifica - Aggiunto un rapido esempio di attivatore che registra su Windows. Il contenuto della funzione, quando aggiunto al file Global.asax.cs, funziona correttamente sul server di produzione, ma non registra mai dall'attivatore.

using System.Web.Mvc; 
using System; 

[assembly: WebActivator.PreApplicationStartMethod(typeof(Admin.App_Start.WebActivatorTestStart), "Start")] 

namespace Admin.App_Start 
{ 
    public static class WebActivatorTestStart { 
     public static void Start() { 

      System.Diagnostics.EventLog log = new System.Diagnostics.EventLog(); 
      log.Source = ".NET Runtime"; 
      log.WriteEntry("WebActivator Start", System.Diagnostics.EventLogEntryType.Information); 

     } 
    } 
} 
+0

Hai ASP.NET 4 installato sulla macchina di produzione? – counsellorben

+0

Sì, stesse versioni di tutto ciò che esiste tra le unità di sviluppo e di produzione, ad eccezione di IIS 7.5/IIS Express 7.5. Il pool di app è impostato su .Net 4, pipeline integrata. – Leniency

+0

Sei sicuro che WebActivator non funzioni? Forse è qualunque cosa tu stia facendo per caricare i tuoi moduli che falliscono? Potresti provare a strumentare WebActivator per scrivere nel log in modo da poter verificare che sia WebActivator che fallisce? –

risposta

0

Beh, non posso dire con certezza quello che ho fatto per sistemare le cose, ma funziona ora.

Un po 'di storia - Gestisco un numero di applicazioni di grandi dimensioni tutte utilizzando alcune librerie comuni. Ho la mia libreria web comune ed è lì che ho avuto l'installazione IOC con Ninject e WebActivator. Questa libreria di base conteneva la cartella App_Start al suo interno. Forse questa era la ragione? Boh. WebActivator non è mai stato in grado di funzionare con questa configurazione, quindi ho usato la NinjectHttpApplication per gestire la registrazione e le attività di avvio. Tuttavia, la libreria di base aveva ancora una dipendenza da WebActivator (solo nessuna cartella App_Start).

Così ora sto lavorando per il refactoring di alcune delle applicazioni e delle librerie di base - ripulire un sacco di odore di codice negli ultimi mesi. Un passo era spostare tutto l'IoC fino all'applicazione web effettiva - rendere le librerie di base meno monolitiche. La libreria di base non ha più alcuna dipendenza da WebActivator.

E ora funziona. Ci sono anche altre centinaia di piccole modifiche che ho apportato alla libreria di base, quindi mi scuso con gli altri per non essere più sistematico a riguardo.

Problemi correlati