Я попробовал это решение 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 также не сделал помог все же.
Я отвечаю на свой собственный вопрос.
Я попробовал добавить следующее в мой 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);
Вы запускаете этот код в ASP.NET? Похоже, что HttpContext имеет значение null, и это приводит к тому, что код ELmah генерирует исключение - метод Elmah.ErrorSignal.FromCurrentContext () передает HttpContext.Current из того, что я помню (какое-то время с тех пор, как изучал его), в Elmah.ErrorSignal. FromContext (контекст HttpContext), и это кажется нулевым, чего обычно не бывает в материалах, размещенных на Asp.Net.
Другая возможность состоит в том, что это происходит вне запроса к серверу, поэтому HttpContext может иметь значение null
Единственное стабильное решение, которое я смог найти, - это удалить атрибут web.config и использовать атрибут поведения службы, который они используют в Ведение журнала исключений для служб WCF с использованием ELMAH