отслеживание исключений NullReferenceException в sitecore - PullRequest
6 голосов
/ 06 марта 2012

Я пытаюсь отследить исключение NullReferenceException, которое появляется на sitecore 6.5 при загрузке любой веб-страницы:

[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

Интересные характеристики, затрудняющие отслеживание этой ошибки, следующие:

1) я получаю следующую ошибку в журнале 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()

однако аналитика очень хорошо отключена:

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

2) ошибка исчезает при отладкев Visual Studio подключитесь к IIS и установите хотя бы одну точку останова (если я не достигну ни одной точки останова, ошибка останется)

3) ошибка снова появится, когда я выполню сборку,или коснитесь web.config.Не пытался восстановить, так как это удалит важные библиотеки sitecore из Website / bin

Дополнительная информация о моей среде: Visual Studio 2010, IIS 7, sitecore 6.5, Windows 7

как бы выотследить эту ошибку?

Ответы [ 9 ]

4 голосов
/ 07 марта 2012

Хорошо, после полдня отладки и декомпиляции я обнаружил, что проблема в (внутреннем) классе Sitecore.Configuration.ConfigPatcher, кажется, он задыхается от Sitecore.WebDav.[Debug/Release].config файлов, которые используются для преобразований xdt файла Sitecore.WebDav.config длясреда доставки и создания контента.

Пока что обходной путь - переименовать эти файлы (и отключить преобразования xdt)

Однако эта проблема должна затронуть любого пользователя преобразований xdt для не-сети.Файлы .config (я использую медленную надстройку Cheetah)

4 голосов
/ 10 июня 2013

Также вы можете получить эту ошибку, когда у вас есть пустой раздел конфигурации в файле конфигурации с исправлениями, как это

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

</configuration>
3 голосов
/ 27 сентября 2012

У меня было что-то похожее при добавлении комментариев xml между узлами:

Не сработало:

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

Если добавить комментарий перед корневым узлом, он работает.

<!-- not used in a delivery node -->
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
    <sitecore />
</configuration>
1 голос
/ 24 января 2013

У меня была такая же проблема, я обнаружил, что если в ваших конфигурационных файлах нет узла <sitecore>, вы получите такую ​​ошибку!

1 голос
/ 21 марта 2012

Похоже, что файл конфигурации "include" отсутствует в вашей настройке. Декомпилируйте Sitecore.Resources.Media.UploadWatcher.InitializeIgnoreList, чтобы попытаться определить, какой из них (извините, у вас нет удобного декомпилятора). Reflector поставляется с 30-дневной пробной версией, или Telerik Just Decompile предоставляется бесплатно.

РЕДАКТИРОВАТЬ Я использую продукт под названием SlowCheetah , который выполняет преобразования XML на основе конфигурации сборки для любого файла XML, а не только web.config, как VS. Вы можете NuGet это. Настоятельно рекомендуется.

0 голосов
/ 29 августа 2013

У меня была точно такая же проблема, с которой я столкнулся выше, и могу подтвердить, что это произошло из-за несовместимого файла .config в папке App_Config / Include. Файл .config работал на IIS7, но не на II6.

Мой лучший совет, чтобы разобраться в этом вопросе - это утомительное сообщение об ошибке и пробная версия. Удалите все подозрительные файлы .config до тех пор, пока веб-сайт не заработает (или верните исходные файлы .config). Начните добавлять каждый файл .config по одному, пока не обнаружите файл, который нарушает работу сайта и вызывает вышеуказанную проблему.

0 голосов
/ 15 августа 2013

У меня была точно такая же проблема (моя трассировка стека была такой же, как и опубликованная), и это оказался искаженный файл .config в папке App_Config\Include.Исправлен конфиг и мой сайт загружен без проблем.

0 голосов
/ 26 сентября 2012

У меня была похожая проблема, и оказалось, что у меня неправильный конфигурационный файл.Точнее, я должен был вставить некоторую случайную строку в начале файла конфигурации:

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

После удаления лишних символов проблема была решена.

Однако, изменив имя проблемного файла, также избавьтесьисключения.

0 голосов
/ 06 марта 2012

Я бы начал с удаления Sitecore.Analytics.dll из папки bin вашего сайта.Вам не нужна dll, поскольку вы отключили аналитику, но, как вы можете видеть из своей трассировки стека, внутри этой dll есть ошибка.

...