Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Rick Anderson
Glimpse adalah keluarga paket NuGet sumber terbuka yang berkembang dan berkembang yang memberikan informasi performa, penelusuran kesalahan, dan diagnostik terperinci untuk aplikasi ASP.NET. Sangat mudah untuk menginstal, ringan, sangat cepat, dan menampilkan metrik performa utama di bagian bawah setiap halaman. Ini memungkinkan Anda untuk menelusuri paling detail aplikasi Anda saat Anda perlu mengetahui apa yang terjadi di server. Glimpse memberikan begitu banyak informasi berharga, kami sarankan Anda menggunakannya sepanjang siklus pengembangan Anda, termasuk lingkungan pengujian Azure Anda. Sementara Fiddler dan alat pengembangan F-12 memberikan tampilan sisi klien, Glimpse memberikan tampilan terperinci dari server. Tutorial ini akan berfokus pada penggunaan paket Glimpse ASP.NET MVC dan EF, tetapi banyak paket lain yang tersedia. Jika memungkinkan, saya akan menautkan ke dokumen Sekilas yang sesuai yang saya bantu pertahankan. Glimpse adalah proyek sumber terbuka, Anda juga dapat berkontribusi pada kode sumber dan dokumen.
- Menginstal Glimpse
- Aktifkan Glimpse untuk localhost
- Tab Garis Waktu
- Pengikatan Model
- Rute
- Menggunakan Glimpse di Azure
- Sumber Daya Tambahan
Menginstal Glimpse
Anda dapat menginstal Glimpse dari konsol manajer paket NuGet atau dari konsol Kelola Paket NuGet . Untuk demo ini, saya akan menginstal paket Mvc5 dan EF6:
Cari Glimpse.EF
Dengan memilih Paket terinstal, Anda dapat melihat modul dependen Sekilas terinstal:
Perintah berikut menginstal modul Glimpse MVC5 dan EF6 dari konsol manajer paket:
PM> Install-Package Glimpse.MVC5
PM> Install-Package Glimpse.EF6
Aktifkan Glimpse untuk localhost
Navigasi ke http://localhost:<port #>/glimpse.axd dan klik tombol Aktifkan Sekilas .
Jika bilah favorit Anda ditampilkan, Anda dapat menyeret dan meletakkan tombol Sekilas dan menambahkannya sebagai bookmarklet:
Sekarang Anda dapat menavigasi aplikasi, dan Heads Up Display (HUD) ditampilkan di bagian bawah halaman.
Halaman Glimpse HUD merinci informasi waktu yang ditunjukkan di atas. Data performa yang tidak mengganggu yang ditampilkan HUD dapat segera memberi tahu Anda tentang masalah - sebelum Anda sampai ke siklus pengujian. Mengklik "g" di sudut kanan bawah memunculkan panel Sekilas:
Pada gambar di atas, tab Eksekusi dipilih, yang menunjukkan detail waktu tindakan dan filter dalam alur. Anda dapat melihat timer filter Stop Watch saya mulai pada tahap 6 alur. Meskipun timer ringan saya dapat memberikan data profil/waktu yang berguna, itu melewatkan semua waktu yang dihabiskan dalam otorisasi dan merender tampilan. Anda dapat membaca tentang timer saya di Profil dan Waktu aplikasi MVC ASP.NET Anda sampai ke Azure.
Tab Garis Waktu
Saya telah memodifikasi tutorial EF 6/MVC 5 Tom Dykstra yang luar biasa dengan perubahan kode berikut ke pengontrol instruktur:
public ActionResult Index(int? id, int? courseID, int ? eager)
{
var viewModel = new InstructorIndexData();
viewModel.Instructors = db.Instructors
.Include(i => i.OfficeAssignment)
.Include(i => i.Courses.Select(c => c.Department))
.OrderBy(i => i.LastName);
if (id != null)
{
ViewBag.InstructorID = id.Value;
viewModel.Courses = viewModel.Instructors.Where(
i => i.ID == id.Value).Single().Courses;
}
if (courseID != null)
{
ViewBag.CourseID = courseID.Value;
// Eager loading
if (eager != null && eager > 0)
{
ViewBag.eagerMsg = "Eager Loading";
viewModel.Enrollments = viewModel.Courses.Where(
x => x.CourseID == courseID).Single().Enrollments;
}
else {
// Explicit loading
ViewBag.eagerMsg = "Explicit Loading";
var selectedCourse = viewModel.Courses.Where(x => x.CourseID == courseID).Single();
db.Entry(selectedCourse).Collection(x => x.Enrollments).Load();
foreach (Enrollment enrollment in selectedCourse.Enrollments)
{
db.Entry(enrollment).Reference(x => x.Student).Load();
}
viewModel.Enrollments = selectedCourse.Enrollments;
}
}
return View(viewModel);
}
Kode di atas memungkinkan saya untuk meneruskan string kueri (eager
) untuk mengontrol pemuatan data yang bersemangat atau eksplisit. Pada gambar di bawah ini, pemuatan eksplisit digunakan dan halaman pengaturan waktu menunjukkan setiap pendaftaran yang Index
dimuat dalam metode tindakan:
Dalam kode berikut, bersemangat ditentukan, dan setiap pendaftaran diambil setelah Index
tampilan dipanggil:
Anda dapat mengarahkan mouse ke segmen waktu untuk mendapatkan informasi pengaturan waktu terperinci:
Pengikatan Model
Tab pengikatan model memberikan banyak informasi untuk membantu Anda memahami bagaimana variabel formulir Anda terikat dan mengapa beberapa tidak terikat seperti yang diharapkan. Gambar di bawah ini menunjukkan ikon ? , yang dapat Anda klik untuk memunculkan halaman bantuan sekilas untuk fitur tersebut.
Rute
Tab Rute Sekilas akan membantu Anda men-debug dan memahami perutean. Pada gambar di bawah ini, rute produk dipilih (dan menunjukkan berwarna hijau, konvensi Sekilas).
Batasan rute, Area, dan token data juga ditampilkan. Lihat Rute Sekilas dan Perutean Atribut di ASP.NET MVC 5 untuk informasi selengkapnya.
Menggunakan Glimpse di Azure
Kebijakan keamanan default Glimpse hanya memungkinkan data Glimpse ditampilkan dari host lokal. Anda dapat mengubah kebijakan keamanan ini sehingga Anda dapat melihat data ini di server jarak jauh (seperti aplikasi web di Azure). Untuk lingkungan pengujian di Azure, tambahkan tanda yang disorot ke bagian bawah file web.config untuk mengaktifkan Glimpse:
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<runtimePolicies>
<ignoredTypes>
<add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet"/>
</ignoredTypes>
</runtimePolicies>
</glimpse>
</configuration>
Dengan perubahan ini saja, setiap pengguna dapat melihat data Sekilas Anda di situs jarak jauh. Pertimbangkan untuk menambahkan markup di atas ke profil penerbitan sehingga hanya diterapkan saat Anda menggunakan profil penerbitan tersebut (misalnya, profil pengujian Azure Anda.) Untuk membatasi data Glimpse, kami akan menambahkan canViewGlimpseData
peran dan hanya mengizinkan pengguna dalam peran ini untuk melihat data Sekilas.
Hapus komentar dari file GlimpseSecurityPolicy.cs dan ubah panggilan IsInRole dari Administrator
ke canViewGlimpseData
peran:
public class GlimpseSecurityPolicy : IRuntimePolicy
{
public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
{
var httpContext = policyContext.GetHttpContext();
if (!httpContext.User.IsInRole("canViewGlimpseData"))
{
return RuntimePolicy.Off;
}
return RuntimePolicy.On;
}
public RuntimeEvent ExecuteOn
{
get { return RuntimeEvent.EndRequest | RuntimeEvent.ExecuteResource; }
}
}
Peringatan
Keamanan - Data kaya yang disediakan oleh Glimpse dapat mengekspos keamanan aplikasi Anda. Microsoft belum melakukan audit keamanan Glimpse untuk digunakan pada aplikasi produksi.
Untuk informasi tentang menambahkan peran, lihat tutorial Menyebarkan aplikasi web Secure ASP.NET MVC 5 dengan Keanggotaan, OAuth, dan SQL Database ke Azure.