Potrzebuję zmienić nazwę aplikacji na podstawie konfiguracji, której używam w Visual Studio. Na przykład, jeśli mam konfigurację debugowania, chcę, aby nazwa aplikacji była wyświetlana jako "App_Debug" w polu Aplikacja w tabeli Elmah_Error. Czy ktokolwiek ma z tym jakieś doświadczenie? A może jest inny sposób na zrobienie tego?Czy jest jakiś sposób programowo ustawić nazwę aplikacji w Elmah?
Odpowiedz
Domyślnie Elmah używa identyfikatora GUID aplikacji AppPool jako domyślnej nazwy aplikacji. Używa tego jako klucza do identyfikacji błędów w tabeli Elmah_Error, gdy spojrzysz na interfejs sieciowy, który został utworzony przez jego moduł HTTP.
Zostałem zobowiązany do zbadania tej opcji dla mojej firmy na początku tego roku. Nie mogłem znaleźć sposobu, aby zmienić to ustawienie domyślnie, ponieważ Elmah pobiera nazwę aplikacji z HttpRuntime.AppDomainAppId
w pliku ErrorLog.cs. Możesz manipulować nim za pomocą dowolnego klawisza; jest to jednak identyfikator GUID AppPool.
Po tym, udało mi się zmanipulować plik ErrorLog.cs, aby przekształcić Elmah w szkielet wywoływalny, zamiast obsługi opartej na jeden i pozwolić mi ustawić ApplicationName. Co skończyło się robi było zmodyfikowanie ErrorLog.cs zawierać właściwość, że pozwolił mi ustawić nazwę, jak poniżej:
public virtual string ApplicationName
{
get
{
if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; }
return _applicationName;
}
set { _applicationName = value; }
}
co prawdopodobnie będziesz musiał zrobić, to dopasować to inaczej i ustawić ApplicationName ale nie HttpRuntime.AppDomainAppId
zamiast tego wartość wyciągnięta z pliku web.config. W sumie jest to możliwe. Sposób, w jaki to zrobiłem, ulepszył metodę ErrorLog.Log(ex)
, więc mogłem użyć Elmah, która ma możliwość wywoływania poza aplikacjami internetowymi. Patrząc wstecz, chciałbym zamiast tego zastosować podejście app/web.config.
Trzeba pamiętać o zmianie nazwy aplikacji w Elmah. Program obsługi http, który generuje interfejs /elmah/default.aspx, przestanie działać. Nadal staram się znaleźć czas, żeby się do tego zakręcić; jednak podczas implementacji może zajść potrzeba utworzenia niestandardowego interfejsu.
Można to teraz zrobić wyłącznie w znacznikach. Wystarczy dodać atrybut applicationName
do elementu errorLog
w sekcji <elmah>
pliku web.config. Przykład:
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="connectionString" applicationName="myApp" />
Przetestowałem to i działa zarówno podczas logowania wyjątek i podczas przeglądania dziennika poprzez Elmah.axd
.
W przypadku PO, można by sobie wyobrazić, że może być ustawiony programowo też, ale nie testowałem tego. Dla mnie i wyobrażam sobie, że w przypadku większości scenariuszy podejście znaczeniowe jest wystarczające.
- 1. Czy jest jakiś sposób programowo wygenerować kod bajtowy Pythona?
- 2. jest jakiś sposób, aby programowo uzyskać częstotliwość odświeżania ekranu?
- 3. Czy jest jakiś znany sposób suszenia JSON
- 4. Czy jest jakiś sposób, aby programowo wysłać moją aplikację iPhone'a w tle?
- 5. Używanie ELMAH w aplikacji konsolowej
- 6. Czy jest jakiś sposób, aby atrybut title = działał w Chrome?
- 7. Czy jest jakiś sposób ograniczyć liczbę powtórzeń w danych podstawowych?
- 8. Czy jest jakiś sposób na robienie argumentów w Spocku?
- 9. Czy istnieje sposób programowo programowo LaunchScreen
- 10. Czy jest jakiś sposób, aby VideoView był odtwarzany w tle w aplikacji na Androida?
- 11. Jak ustawić programowo programowo?
- 12. Czy jest jakiś rodzaj API Grooveshark?
- 13. Czy jest jakiś wrapper Pythona wokół crona?
- 14. Czy jest jakiś sposób, aby wyświetlić plan wykonania programu?
- 15. Czy jest jakiś sposób sprawdzenia zainstalowanej wersji Gulp?
- 16. w Bashu możesz ustawić -x, aby włączyć debugowanie, czy jest jakiś sposób sprawdzenia, czy zostało to ustawione w skrypcie?
- 17. Czy jest jakiś sposób domyślnie użyć atrybutu JavaScript?
- 18. OCMock - weryfikacja kolejności wywołań metod. Czy jest jakiś inny sposób?
- 19. Czy jest jakiś sposób na stworzenie łatki do przeglądu?
- 20. Czy jest jakiś sposób, aby Guice Grapher zadziałał?
- 21. Czy jest jakiś sposób poznania pid z uruchomionego programu?
- 22. Czy jest jakiś skrótowy sposób na uzyskanie float z tablicy?
- 23. Czy jest jakiś sposób dodania ikony do paska Snackbar?
- 24. Czy istnieje jakiś popularny sposób zapisywania ustawień aplikacji w bardziej zaawansowany sposób niż zwykły plik .settings?
- 25. Czy jest jakiś sposób na uzyskanie czasu trwania trwającego przekodowywania?
- 26. Czy jest jakiś sposób wyłączenia panoramowania na tabletach - stronie internetowej?
- 27. Czy jest jakiś sposób użyć nowego DrawerLayout z ActionBarSharlock?
- 28. Czy w Scali jest jakiś silnik gry?
- 29. Czy jest jakiś lekki aktor w Akka?
- 30. Czy jest jakiś sposób, aby pokazać ekran powitalny dla aplikacji WPF?
Drobne drobnostanie, ale lubię ten wzór lepiej: return _applicationName ?? (_applicationName = HttpRuntime.AppDomainAppId); –
W procedurach przechowywanych w bazie danych Elmah znajdują się filtry przy nazwie aplikacji. Zmieniono wszystkie procedury składowane w moim środowisku, aby zignorować ten filtr, dzięki czemu można wyświetlić wszystkie błędy w jednej konsoli. –