Bagaimana cara menonaktifkan wawasan aplikasi secara otomatis saat menggunakan konfigurasi debug dan mengaktifkannya hanya saat rilis?
Apakah mungkin melakukan ini tanpa membuat kunci instrumentasi lain hanya untuk debug?
Saya memiliki trackevent
pernyataan yang tersebar di seluruh kode, melampirkannya di dalam pemeriksaan preprocessor debug bukanlah solusi yang ideal.
Solusi saya saat ini adalah untuk mengatur Build Action
dari ApplicationInsights.config
file None
sehingga tidak disalin ke direktori keluaran proyek, tapi ini bukan proses yang dapat otomatis berdasarkan aktif membangun konfigurasi.
Ada Mode Pengembang tetapi perlu diubah secara manual (jika memungkinkan untuk mengatur file konfigurasi secara bersyarat, mengosongkan kunci instrumentasi juga menyelesaikan masalah). Lihat http://apmtips.com/blog/2015/02/02/developer-mode/
sumber
WindowsAppInitializer.InitializeAsync();
(saya juga mencoba setelahnya) tetapi penghitung peristiwa wawasan aplikasi studio visual meningkat. Saya tidak dapat melihat apakah sesi ini direkam secara efektif di portal biru karena ada terlalu banyak sesi dan pengguna. Saya akan mencoba pada malam hari.Sebagai tambahan untuk solusi lain, saya sarankan untuk menambahkan yang berikut ini, katakanlah
Global.asax
:Keuntungannya adalah, tidak perlu mengubah konfigurasi dan berfungsi lebih baik dengan beberapa alat seperti ReSharper yang akan memahaminya lebih baik daripada
#
-directives.sumber
Conditional
-attribute.Untuk proyek ASP.NET Core, App Insights AKTIF secara default, yang sebenarnya mencatat banyak info ke jendela debug.
Untuk menonaktifkannya pergi ke "ALAT -> Opsi -> Proyek dan Solusi -> Proyek Web" dan centang "Nonaktifkan Wawasan Aplikasi lokal untuk proyek web Asp.Net Core."
Di bawah ini adalah gambar untuk menonaktifkan wawasan aplikasi lokal.
Untuk info lebih lanjut tentang masalah ini, Anda dapat melihat masalah github resmi di sini
sumber
Seperti yang dijelaskan dalam pertanyaan untuk tidak menerapkan atau menerapkan ApplicationInsights.config tanpa
<instrumentationkey>key</instrumentationkey>
memblokir peristiwa agar tidak dibuat. Anda kemudian dapat memasukkan kunci instrumentasi dalam kode (hanya saat rilis dalam kasus saya)Setiap
TelemetryClient
dibuat setelah panggilan ini akan memiliki kunci yang benar dan akan melacak acara sehingga Anda tidak perlu mengubah kode di semua tempat. Tidak memanggil metode di atas atau membiarkan parameter kosong akan memblokir peristiwa karena tidak ada kunci yang dikonfigurasi.Pada dasarnya
ApplicationInsights.config
file menimpa kode apa pun yang mengatur kunci instrumentasi, menghapus<instrumentationkey>key</instrumentationkey>
di dalamnya akan memungkinkan Anda menggunakan kode untuk mengkonfigurasi kunci. Jika Anda menghapus file sepenuhnya itu tidak berhasil.Berikut konfirmasinya: "Jika Anda ingin menyetel kunci secara dinamis - misalnya jika Anda ingin mengirim hasil dari aplikasi Anda ke sumber daya yang berbeda - Anda dapat menghilangkan kunci dari file konfigurasi, dan menyetelnya dalam kode."
Referensi: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey
sumber
ApplicationInsights.Debug/Release.config
Saya telah memutuskan untuk menggunakan kedua pendekatan tersebut. Saya telah memindahkan
InstrumentationKey
keWeb.config
dan itu akan digantikan oleh transformasi dariWeb.Release.config
atauWeb.Debug.config
. (jangan lupa untuk menghapusnya dariApplicationInsights.config
file). Kemudian saya memanggil metode ini dariApplication_Start()
sumber
Menjalankan aplikasi web ASP.NET Core 2.1 dengan Visual Studio 2017 (15.9.2) "Nonaktifkan Wawasan Aplikasi lokal untuk proyek web Asp.Net Core" tidak menghapus output di jendela Debug saya.
Namun menambahkan berikut ini ke Configure () di Startup.cs melakukan pekerjaan itu;
Perhatikan bahwa IsTracingDisabled adalah solusi utama , tetapi saya tetap menggunakan DisableTelemetry untuk ukuran yang baik! Selain itu, memiliki kedua garis di samping satu sama lain sangat membantu saat mencari referensi serupa antara proyek .NET Framework & .NET Core dalam solusi yang sama.
sumber
Saya baru saja mengalami masalah yang sama.
Kami ingin mengontrol pengaturan di web.config jadi menambahkan kunci DisableAITelemetri dalam pengaturan aplikasi kami:
Dengan live dan demo build, kami tidak akan menyertakan nilai (sehingga defaultnya adalah false).
Kami kemudian dapat menyelesaikannya dengan menambahkan ini:
sumber
Permainan yang sedikit berbeda pada beberapa solusi lainnya. Taruh ini di global.asax Anda:
Ini akan mematikan keluaran debug wawasan aplikasi saat berjalan di bawah debugger, tetapi mengizinkannya di bawah skenario Ctrl + F5 dan membangun debug diterbitkan untuk menguji server
sumber
Dalam aplikasi ASP.NET Core, Anda dapat menambahkan berikut ini ke Startus.cs untuk mematikan Application Insights di lingkungan Pengembangan:
Tambahkan ini ke konstruktor, tepat setelah
builder.AddApplicationInsightsSettings();
perintah dan Anda tidak akan lagi melihat log AI yang menyumbat konsol debug Anda.sumber
Kami telah menemukan cara termudah untuk mencegahnya menelusuri log Debug sesederhana:
sumber
Microsoft.ApplicationInsights.AspNetCore Versi 2.1
sumber
Application Insights Telemetry (unconfigured)
pesan dari panel Debug di Visual Studio - karena jika demikian tampaknya tidak berhasil :-(TelemetryDebugWriter.IsTracingDisabled = true;
menghapusnya.sumber
Sejak .NET Core 3.1:
sumber
Pada ASP.NET Core 3.1:
(di atas bisa dipanggil dari mana saja, tapi semakin cepat dalam siklus hidup aplikasi Anda, semakin baik).
Keduanya dapat digunakan bersama untuk menyembunyikan semua aktivitas Application Insights di kode Anda. Saya menjaga dengan
#if DEBUG
arahan untuk memastikan bahwa AppInsights tidak melakukan apa pun di mesin lokal saya, tetapi mengeluarkan peristiwa saat diunggah ke server dev Azure kami:sumber