Если Вы просто хотите сделать это для отладки целей, изучают strace, который создается в вершине ptrace (2) системный вызов, который позволяет Вам поднимать трубку код, когда системный вызов сделан. Посмотрите часть PTRACE_SYSCALL страницы справочника.
Поскольку метод FromCurrentContext ()
является статическим методом, вы не можете просто имитировать его вызов. У вас есть еще два варианта.
Поскольку FromCurrentContext ()
внутренне вызывает HttpContext.Current
, вы можете вставить в него поддельный контекст. Например:
SimpleWorkerRequest request = new SimpleWorkerRequest (
"/ blah", @ "c: \ inetpub \ wwwroot \ blah", "blah.html", null, new StringWriter ());
HttpContext.Current = новый HttpContext (запрос);
При этом исключение больше не должно генерироваться, поскольку HttpContext.Current
не равно null.
Создайте класс-оболочку вокруг вызова Raise и просто имитируйте класс-оболочку.
public class ErrorSignaler {
public virtual void SignalFromCurrentContext (Exception e) {
если (HttpContext.Current! = ноль)
Elmah.ErrorSignal.FromCurrentContext (). Поднять (e);
}
}