ELMAH - Исключение, Регистрирующееся, не имея HttpContext

Я попробовал это решение Elmah. XmlFileErrorLog, но я получаю следующее исключение

System.ArgumentNullException was unhandled by user code
  Message="Value cannot be null.\r\nParameter name: context"
  Source="Elmah"
  ParamName="context"
  StackTrace:
       at Elmah.ErrorSignal.FromContext(HttpContext context) in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 67
       at Elmah.ErrorSignal.FromCurrentContext() in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 61
       at ElmahHttpErrorHandler.ProvideFault(Exception error, MessageVersion version, Message& fault) in c:\Myapplication\App_Code\Util\ElmahHttpErrorHandler.cs:line 19
       at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideFault(Exception e, FaultConverter faultConverter, ErrorHandlerFaultInfo& faultInfo)
       at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideMessageFaultCore(MessageRpc& rpc)
       at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessageCleanup(MessageRpc& rpc)
  InnerException: 

Сеть. Файл конфигурации


    
...

Я использую окна 7. может быть какая-либо проблема, связанная с ним?

Примечание ОБНОВЛЕНИЯ: я выполняю сервис WCF unders ASP.NET. т.е. я добавил, что проект Услуг WCF к решению Добавляет Новый Веб-сайт и затем выбор шаблона WCF Service. Я в настоящее время выполняю его из IDE. Хостинг его на IIS также не сделал помог все же.

50
задан Community 23 May 2017 в 02:02
поделиться

3 ответа

Я отвечаю на свой собственный вопрос.

Я попробовал добавить следующее в мой web.config

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

Также украсил мой Service следующим атрибутом

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]    
public class CalculatorService : ICalculatorSession    
{
    // Implement calculator service methods
 }

Все равно не помогло. Затем я нашел решение здесь, с помощью которого вы можете использовать Elmah без HTTPContext. Т.е. записывать ошибки в лог, написав

Elmah.ErrorLog.GetDefault(null).Log(new Error(ex));

вместо

Elmah.ErrorSignal.FromCurrentContext().Raise(error);
86
ответ дан 7 November 2019 в 10:40
поделиться

Вы запускаете этот код в ASP.NET? Похоже, что HttpContext имеет значение null, и это приводит к тому, что код ELmah генерирует исключение - метод Elmah.ErrorSignal.FromCurrentContext () передает HttpContext.Current из того, что я помню (какое-то время с тех пор, как изучал его), в Elmah.ErrorSignal. FromContext (контекст HttpContext), и это кажется нулевым, чего обычно не бывает в материалах, размещенных на Asp.Net.

Другая возможность состоит в том, что это происходит вне запроса к серверу, поэтому HttpContext может иметь значение null

0
ответ дан 7 November 2019 в 10:40
поделиться

Единственное стабильное решение, которое я смог найти, - это удалить атрибут web.config и использовать атрибут поведения службы, который они используют в Ведение журнала исключений для служб WCF с использованием ELMAH

1
ответ дан 7 November 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: