Проблема с окружающей средой. StackTrace - PullRequest
0 голосов
/ 21 июля 2010

В потоке, который обрабатывает новые данные в системе, если данные недействительны, я записываю сообщение в журнал событий, содержащий информацию Environment.StackTrace.

Запись в журнал событий вызывает исключениебез текстового сообщения

Message: 
CallStack -    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
       at System.Environment.get_StackTrace()
       at <my method that writes in the event log>

Любые идеи, почему это происходит?

РЕДАКТИРОВАТЬ: меня интересует, что может вызвать исключение Environment.StackTrace в целом, чтобы я мог понять, чтопроисходит в моем случае

Ответы [ 2 ]

2 голосов
/ 17 октября 2014

@ anchandra Я не знаю, поняли ли вы это с тех пор, как сейчас 4 года.

Однако я хотел бы добавить, поскольку сам наткнулся на это.

Итак, почему Environment.StackTrace выдает исключение?

Первый самый неинтересный ответ: Как вы можете видеть в ссылке MSDN на свойство, оно может выдать ArgumentOutOfRangeException, если «Запрошенная информация трассировки стека находится вне диапазона.», Обратите внимание также, что контекст выполнения должен иметь System.Security.Permissions.EnvironmentPermission.

Теперь, что озадачило меня на секунду: Это не исключение! Да, это то, что происходило со мной, на самом деле он возвращал мне трассировку стека, которая начинала перечислять вызов Environment.StackTrace наподобие «at System.Environment.get_StackTrace ()», а затем показывал все остальные вызывающие методы. Поскольку я записывал это в журнал аудита, если вы посмотрите на него, вы предполагаете, что в последнем кадре стека происходит исключение, но это не так, я просто запрашивал трассировку стека в этой точке и вставлял ее в моем журнале ошибок, очень глупо, как только я понял это.

0 голосов
/ 21 июля 2010

Вам нужно захватить трассировку стека перед перемещением в отдельный поток.

Stacktrace покажет вам только кадры до корня потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...