Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / NullReferenceException в static полях / 5 сообщений из 5, страница 1 из 1
27.06.2014, 12:37
    #38681731
_Guest123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NullReferenceException в static полях
Доброго дня.
У меня в одном из приложений регулярно (примерно раз в несколько дней) выдается ошибка NullReferenceException , при обращении к статическим полям в статическом классе.
Но при этом обращение к статическим методам, не обращающихся к статическим полям, работает корректно.

Пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    
public static class Helper
    {
        // Property 1
        public static readonly MyRepository Instance1 = new MyRepository();

        // Property 2
        [ThreadStatic]
        private static MyRepository _instance2;
                
        public static MyRepository Instance2
        {
            get
            {
                if (_instance2 == null) _instance2 = new MyRepository();
                    return _instance2;
            }
        }

        // Error: NullReferenceException     //Instance1 = null  	
        public static object Method1() { return Instance1.GetData(); }

        // Error: NullReferenceException     //Instance2 = null
        public static object Method2() { return Instance2.GetData(); }

        // OK
        public static object Method3() { return "abc"; }
    } 



Подскажите, пожалуйста, по какой причине могут обнуляться статические поля?
Каким образом можно устранить это обнуление?

Спасибо.
...
Рейтинг: 0 / 0
27.06.2014, 12:47
    #38681752
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NullReferenceException в static полях
_Guest123Подскажите, пожалуйста, по какой причине могут обнуляться статические поля?

возможно проблема в MyRepository.GetData(), оттуда ноги NullRefrenceException растут
...
Рейтинг: 0 / 0
27.06.2014, 13:13
    #38681792
_Guest123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NullReferenceException в static полях
hVostt,

Скорее всего нет, я эмитировал ситуацию, когда MyRepository.GetData() возвращает return "abc";, и все равно ошибка оставалась.


Да, периодически все статические поля в классе становятся недоступны и все методы .
При выполнении статического метода как только доходит до обращения к статическому полю, валится ошибка NullReferenceException . Если обращения к полю нет или в коде метода не доходит до обращения к такому полю, то метод отрабатывает корректно.

Также если я в Raizor , например, обращусь напрямую к этому полю, то тоже получу null.

При этом ошибка получается сразу у всех пользователей приложения.

Отпускает эту ошибку , если перезапустить приложение на iis.
...
Рейтинг: 0 / 0
27.06.2014, 13:20
    #38681809
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NullReferenceException в static полях
_Guest123,

скорее всего происходит попытка чтения из другого AppDomain, так как значения статических полей доступны в рамках одного AppDomain. проверь является ли на стороне чтения статических свойств AppDomain.CurrentDomain тем же, что и у статического класса (можешь отследить это через логгирование).
...
Рейтинг: 0 / 0
27.06.2014, 13:22
    #38681813
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NullReferenceException в static полях
_Guest123,

а вообще рекомендую вместо static хранить данные в кеше HttpRuntime.Cache, проблем не будет.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / NullReferenceException в static полях / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]