Мне нужно изменить имя приложения в зависимости от того, какую конфигурацию я использую в Visual Studio. Например, если я нахожусь в конфигурации отладки, я хочу, чтобы имя приложения отображалось как «App_Debug» в поле «Приложение» в таблице Elmah_Error. У кого-нибудь есть опыт в этом? Или есть другой способ сделать это?
Есть ли способ программно установить имя приложения в Elmah?
Ответы (2)
По умолчанию Elmah использует GUID приложения AppPool в качестве имени приложения по умолчанию. Он использует это как ключ для определения ошибок в таблице Elmah_Error, когда вы смотрите на веб-интерфейс, созданный с помощью его HTTP-модуля.
Ранее в этом году мне было поручено изучить этот вариант для моей компании. Я не смог найти способ манипулировать этим по умолчанию, поскольку Elmah извлекает имя приложения из HttpRuntime.AppDomainAppId
в файле ErrorLog.cs. Вы можете манипулировать им любой клавишей, какой хотите; однако это GUID AppPool.
С учетом сказанного я смог манипулировать файлом ErrorLog.cs, чтобы превратить Elmah в вызываемый фреймворк вместо фреймворка, основанного на обработчике, и позволить мне установить ApplicationName. В итоге я изменил ErrorLog.cs, включив в него свойство, которое позволило мне установить имя, как показано ниже:
public virtual string ApplicationName
{
get
{
if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; }
return _applicationName;
}
set { _applicationName = value; }
}
Что вам, вероятно, нужно будет сделать, так это настроить это по-другому и установить для ApplicationName не HttpRuntime.AppDomainAppId
, а вместо этого значение, взятое из web.config. В общем, это возможно. То, как я это сделал, улучшило метод ErrorLog.Log(ex)
, чтобы я мог использовать Elmah, у которого есть вызываемая структура за пределами веб-приложений. Оглядываясь назад, я хотел бы вместо этого использовать подход app/web.config.
Одна вещь, о которой следует помнить при изменении имени приложения в Elmah. Обработчик http, создающий интерфейс /elmah/default.aspx, больше не будет работать. Я все еще пытаюсь найти время, чтобы вернуться к этому; однако при реализации вам может потребоваться изучить создание пользовательского интерфейса.
Теперь это можно сделать чисто в разметке. Просто добавьте атрибут applicationName
к элементу errorLog
в разделе <elmah>
файла web.config. Пример:
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="connectionString" applicationName="myApp" />
Я протестировал это, и оно работает как при регистрации исключения, так и при просмотре журнала через Elmah.axd
.
В случае с OP можно было бы предположить, что его можно установить и программно, но я этого не проверял. Для меня и я предполагаю, что для большинства сценариев достаточно подхода разметки.
<configSections>
.
- person Chiramisu; 02.04.2013
DEBUG
требуются другие параметры. stackoverflow.com/a/35561167/397817 msdn.microsoft.com/en-us/library/dd465326(VS.100).aspx
- person Stephen Kennedy; 27.03.2018