@ anchandra Я не знаю, поняли ли вы это с тех пор, как сейчас 4 года.
Однако я хотел бы добавить, поскольку сам наткнулся на это.
Итак, почему Environment.StackTrace выдает исключение?
Первый самый неинтересный ответ:
Как вы можете видеть в ссылке MSDN на свойство, оно может выдать ArgumentOutOfRangeException, если «Запрошенная информация трассировки стека находится вне диапазона.», Обратите внимание также, что контекст выполнения должен иметь System.Security.Permissions.EnvironmentPermission.
Теперь, что озадачило меня на секунду:
Это не исключение! Да, это то, что происходило со мной, на самом деле он возвращал мне трассировку стека, которая начинала перечислять вызов Environment.StackTrace наподобие «at System.Environment.get_StackTrace ()», а затем показывал все остальные вызывающие методы.
Поскольку я записывал это в журнал аудита, если вы посмотрите на него, вы предполагаете, что в последнем кадре стека происходит исключение, но это не так, я просто запрашивал трассировку стека в этой точке и вставлял ее в моем журнале ошибок, очень глупо, как только я понял это.