2012-03-06 22 views
6

Sto cercando di tenere traccia di un NullReferenceException che si presenta sulla Sitecore 6,5 al caricamento di qualsiasi pagina web:tracciamento NullReferenceExceptions in Sitecore

[NullReferenceException: Object reference not set to an instance of an object.] 
    Sitecore.Diagnostics.Log.Error(String message, Exception exception, Type ownerType) +133 
    Sitecore.Diagnostics.Log.Error(String message, Type ownerType) +45 
    Sitecore.Configuration.Factory.LoadAutoIncludeFiles(ConfigPatcher patcher, String folder) +680 
    Sitecore.Configuration.Factory.LoadAutoIncludeFiles(XmlNode element) +63 
    Sitecore.Configuration.Factory.GetConfiguration() +347 
    Sitecore.Diagnostics.LoggerFactory..cctor() +67 

[TypeInitializationException: The type initializer for 'Sitecore.Diagnostics.LoggerFactory' threw an exception.] 
    Sitecore.Diagnostics.LoggerFactory.GetLogger(Type type) +17 
    Sitecore.Diagnostics.Log.Error(String message, Exception exception, Type ownerType) +93 
    Sitecore.Diagnostics.Log.Error(String message, Type ownerType) +45 
    Sitecore.Configuration.Factory.LoadAutoIncludeFiles(ConfigPatcher patcher, String folder) +680 
    Sitecore.Configuration.Factory.LoadAutoIncludeFiles(XmlNode element) +63 
    Sitecore.Configuration.Factory.GetConfiguration() +347 
    Sitecore.Configuration.Factory.GetConfigNode(String xpath, Boolean assert) +82 
    Sitecore.Configuration.Factory.GetConfigNode(String xpath) +29 
    Sitecore.Resources.Media.UploadWatcher.InitializeIgnoreList() +114 
    Sitecore.Resources.Media.UploadWatcher..cctor() +51 

[TypeInitializationException: The type initializer for 'Sitecore.Resources.Media.UploadWatcher' threw an exception.] 
    Sitecore.Resources.Media.UploadWatcher..ctor() +0 

[TargetInvocationException: Exception has been thrown by the target of an invocation.] 
    System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0 
    System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +98 
    System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241 
    System.Activator.CreateInstance(Type type, Boolean nonPublic) +69 
    System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1136 
    System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111 
    System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture) +23 
    System.Web.HttpRuntime.CreateNonPublicInstance(Type type, Object[] args) +60 
    System.Web.HttpApplication.BuildIntegratedModuleCollection(List`1 moduleList) +231 
    System.Web.HttpApplication.GetModuleCollection(IntPtr appContext) +1365 
    Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleReflectionUtil.GetIntegratedModuleCollection(HttpApplication target, IntPtr appContext) +33 
    Microsoft.Web.Infrastructure.DynamicModuleHelper.CriticalStatics.Init(HttpApplication context) +179 
    Microsoft.Web.Infrastructure.DynamicModuleHelper.IntegratedDynamicModule.Init(HttpApplication context) +6 
    System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +517 
    System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +194 
    System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339 
    System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253 

[HttpException (0x80004005): Exception has been thrown by the target of an invocation.] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9087676 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +256 

le caratteristiche interessanti che rendono questo errore difficile da monitorare sono i seguenti:

1) ottengo il seguente errore nel registro Sitecore:

Exception: System.InvalidOperationException 
Message: 'analytics' connection string is not defined 
Source: Sitecore.Kernel 
    at Sitecore.Diagnostics.Assert.IsNotNull(Object value, String message) 
    at Sitecore.Diagnostics.Assert.ResultNotNull[T](T result, String message) 
    at Sitecore.Analytics.Data.DataAccess.DataAdapters.DataAdapterManager.ConnectionStrings.get_AnalyticsSettings() 
    at Sitecore.Analytics.Data.DataAccess.DataAdapters.DataAdapterManager.ConnectionStrings.get_Analytics() 
    at Sitecore.Analytics.Data.DataAccess.DataAdapters.Sql.SqlServer.SqlServerDataAdapterProvider..ctor() 

tuttavia Analytics è molto ben disabilitato:

012.
<setting name="Analytics.DisableDatabase" value="true" /> 
... 
<setting name="Analytics.Enabled" value="false" /> 

2) l'errore va via quando il debug con Visual Studio, collegare a IIS, e ha colpito almeno un punto di interruzione (se non mi ha colpito alcun punto di interruzione, l'errore rimane)

3) l'errore si presenta di nuovo quando faccio una build, o tocco web.config. Non ho provato la ricostruzione, come che eliminare importanti dll Sitecore dal sito Web/bin

ulteriori informazioni circa il mio ambiente: Visual Studio 2010, IIS 7, Sitecore 6.5, Windows 7

come si dovrebbe tenere traccia di questo errore?

risposta

4

Ok, dopo mezza giornata di debug e decompilazione ho scoperto il problema era la (interno) di classe Sitecore.Configuration.ConfigPatcher, sembra di soffocare con Sitecore.WebDav.[Debug/Release].config file che vengono utilizzati per le trasformazioni XDT del file Sitecore.WebDav.config per la distribuzione di contenuti e ambiente di creazione dei contenuti.

Per il momento, la soluzione è rinominare i file (e disabilitare trasformazioni XDT)

Tuttavia, questo problema dovrebbe influenzare qualsiasi utente di trasformazioni XDT per i file non-web.config (sto usando lenta add ghepardo in)

+0

LentaCheetah causa problemi qui? –

+0

@SayedIbrahimHashimi, per niente, il problema è in realtà il parser di configurazione del sitecore, apparentemente non può discriminare tra i file di configurazione di trasformazione xdt e i normali file di configurazione, quindi cerca di eliminare tutto ciò che inizia con 'Sitecore. *. Config' – lurscher

+0

Ok cool , solo controllando. –

0

Vorrei iniziare con la rimozione Sitecore.Analytics.dll dalla cartella bin del tuo sito web. Non hai bisogno della DLL come hai disattivato l'analisi, ma come puoi vedere dallo stacktrace, c'è un errore in questa dll.

1

Sembra che nel setup sia presente un file di configurazione "include". Decompila Sitecore.Resources.Media.UploadWatcher.InitializeIgnoreList per cercare di capire quale (scusa non hai un decompilatore a portata di mano). Reflector viene fornito con una versione di prova di 30 giorni o Telerik Just Decompile è gratuito.

EDIT Io uso un prodotto chiamato SlowCheetah che esegue le trasformazioni XML in base alla configurazione di build per qualsiasi file XML, non solo web.config come VS. Puoi NuGet it. Altamente raccomandato.

+0

Grazie per aver commentato SlowCheetah! –

0

Ho avuto un problema simile e si è verificato un file di configurazione non valido. Più in particolare Devo aver incollato qualche stringa casuale all'inizio del file di configurazione:

some_random_string<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 

Dopo aver rimosso i caratteri ridondanti problema è stato risolto.

Tuttavia, la modifica del nome del file problematico elimina anche l'eccezione.

2

ho avuto qualcosa di simile quando l'aggiunta di commenti XML tra i nodi:

non ha funzionato:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <!-- not used in a delivery node --> 
    <sitecore /> 
</configuration> 

Se si aggiunge il commento prima il nodo principale, funziona.

<!-- not used in a delivery node --> 
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore /> 
</configuration> 
1

Ho avuto lo stesso problema, ho scoperto se i file di configurazione non hanno il nodo <sitecore> si otterrà un errore come questo!

4

Inoltre è possibile ottenere questo errore quando si dispone di sezione di configurazione vuota nel file di configurazione con l'applicazione di patch, come questo

<?xml version="1.0"?> 
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 

</configuration> 
0

ho avuto lo stesso problema (la mia traccia dello stack è stata la stessa di quella spedita) e si è rivelato essere un file .config non valido nella cartella App_Config\Include. Risolto il problema con la configurazione e il mio sito veniva caricato senza problemi.

0

Ho avuto lo stesso identico problema riscontrato sopra e posso confermare che è successo a causa di un file .config incompatibile nella cartella App_Config/Include. Il file .config funzionava su IIS7, ma non su II6.

Il mio miglior consiglio per andare a fondo di questo problema è un noioso messaggio di prova ed errore. Rimuovere eventuali file .config sospetti finché il sito Web non è attivo e in esecuzione (o ripristinare i file .config originali). Inizia ad aggiungere ogni file .config uno alla volta, finché non trovi il file che interrompe il sito e causa il problema precedente.