Saya memiliki aplikasi ASP.NET MVC (beta) yang sedang saya kerjakan, dan saya mengalami kesulitan mencari tahu apakah saya melakukan sesuatu yang salah, atau jika Application_Start
metode saya di Global.asax.cs sebenarnya tidak diaktifkan ketika saya mencoba untuk debug aplikasi.
Saya meletakkan breakpoint pada sebuah baris dalam Application_Start
metode saya , dan saya berharap bahwa ketika saya mencoba untuk debug aplikasi yang breakpoint harus terkena ... tetapi tidak pernah melakukannya. Tidak setelah saya mereset IIS, tidak setelah saya reboot, tidak pernah. Apakah saya melewatkan sesuatu? Mengapa metode ini tidak pernah dipanggil?
c#
asp.net-mvc
Bob Yexley
sumber
sumber
global.asax
file itu hilang. jadi itu juga patut diperiksa :-)Jawaban:
Jika ini di IIS, aplikasi dapat memulai sebelum debugger telah dilampirkan. Jika demikian, saya tidak yakin apakah Anda dapat tidur cukup lama agar bisa terhubung.
Di Visual Studio, Anda bisa melampirkan debugger ke suatu proses. Anda melakukan ini dengan mengklik Debug >> Lampirkan untuk memproses. Lampirkan ke browser dan kemudian tekan aplikasi Anda. Agar aman, maka restart IIS dan tekan situs. Saya tidak 100% yakin ini akan menyelesaikan masalah, tetapi itu akan jauh lebih baik daripada melepaskan thread sleep di App_Start.
Pilihan lain adalah host sementara di server web built-in sampai Anda selesai memulai aplikasi debug.
sumber
Catatan: alternatif mudah yang bagus untuk menggunakan "Visual Studio Development Server" inbuilt atau IIS Express (misalnya karena Anda berkembang melawan IIS dan memiliki pengaturan khusus yang Anda perlukan untuk berfungsinya aplikasi Anda) adalah dengan tetap menjalankan menjalankan di IIS (I gunakan entri file Server Web Kustom + host + IIS mengikat ke domain yang sama)
Breakpoint Anda harus dipukul dengan baik, dan Anda dapat terus men-debug di habitat IIS alami Anda . Bagus !
sumber
Berikut ini membantu dalam hal apa pun (tidak masalah jika Anda menggunakan IIS, Cassini atau apa pun):
Mengapa ini bekerja? Ketika web.config diubah, server web (IIS, Cassini, dll.) Melakukan daur ulang, tetapi dalam kasus ini (untuk alasan apa pun), prosesnya tetap sama, sehingga Anda tetap terhubung dengannya dengan debugger (Visual Studio ).
sumber
Saya juga mengalami masalah dengan breakpoints di application_start dengan IIS aplikasi yang di-host. Solusi yang baik adalah menggunakan Debugger.Break (); dalam kode alih-alih VS breakpoint
sumber
Saya memiliki masalah yang sama. Saya telah membuat banyak penggantian nama dalam solusi saya. Setelah itu saya mendapat dua aplikasi web yang tidak berfungsi dan beberapa aplikasi web lainnya baik-baik saja. Saya mendapat kesalahan bahwa saya memiliki rute yang salah. Ketika saya mencoba mengatur break point dalam
Application_Start
metode, dan kemudian restart IIS, VS tidak menghentikan eksekusi. Dengan aplikasi web yang bisa dikerjakan istirahat bekerja. Kemudian saya ingat bahwa "solusi bersih" dan "membangun kembali" tidak menghapus majelis yang tersisa setelah penggantian nama. Dan itu solusinya! Saya telah secara manual membersihkanbin
direktori-aplikasi buggy-web saya dan kemudian melihat kesalahan baru dalamGlobal.asax
Inherits=""
atribut direferensikan dll lama. Saya telah mengubahnya di baru dan istirahat mulai bekerja. Misalkan, selama mengganti nama Global.asax tidak diperbarui,sumber
Punya masalah yang sama dalam Proyek yang kami ambil setelah vendor lain membangunnya. Masalahnya adalah bahwa meskipun ada sejumlah perintah yang ditulis oleh vendor sebelumnya di Global.asax.cs, yang mungkin membuat Anda percaya itu sedang digunakan, itu sebenarnya diabaikan sepenuhnya. Global.asax tidak mewarisinya, dan mudah untuk tidak pernah melihat file ini jika file .cs ada - Anda harus mengklik kanan Global.asax dan klik Lihat Markup untuk benar-benar melihatnya.
Global.asax:
Perlu diubah menjadi:
Di mana ProjectNamespace adalah apa pun namespace dari kelas Global.asax.cs Anda (biasanya nama Proyek Anda).
Dalam kasus kami, file tersebut berisi banyak kode inline, beberapa di antaranya disalin dari file .cs, beberapa tidak. Kami baru saja membuang kode inline ke file .cs dan secara bertahap menggabungkan perubahan kami kembali.
sumber
Coba alihkan mode pipeline terkelola untuk kumpulan aplikasi ke "Klasik" alih-alih "Terintegrasi". Itu memecahkan masalah bagi saya. Melihat alasannya sekarang ...
(Alat peraga untuk jawaban ini milik Flores (lihat komentarnya atas jawabannya sendiri), saya hanya ingin memberikan ini sebagai jawaban terpisah untuk menarik lebih banyak perhatian padanya)
sumber
Pastikan global.asax Anda tidak berada di bawah subdirektori. Itu harus ditempatkan di tingkat root ke dalam proyek Anda.
sumber
Global.asax.cs
dan diharapkan akan berfungsi. Anda harus membuatnya menggunakanAdd
->New Item
->Global Application Class
sehingga dibuat denganGlobal.asax
file konfigurasi formulir web yang sesuai .Kami memiliki masalah serupa, di mana global.asax.cs diabaikan.
Ternyata situs tersebut ditingkatkan dari situs web .NET 2 yang telah dikompilasi menjadi situs .NET 4.0. Di server,
PrecompiledApp.config
file belum dihapus dari folder root. Setelah menghapusnya, dan mendaur ulang kumpulan aplikasi IIS dan menyentuh web.config untuk memulai kembali aplikasi, kode dalam Global.asax.cs mulai berfungsi dengan baik.sumber
Saya pernah mengalami masalah ketika Global.asax dan Global.asax.cs tidak benar-benar disalin ke folder IIS oleh skrip penerapan ... Jadi itu berfungsi ketika debugging pada server pengembangan, tetapi tidak di bawah IIS.
sumber
Entri yang terlambat ...
Untuk menguji apakah Aplikasi IIS dimulai atau tidak sebelum debugger memiliki cukup waktu untuk melampirkan cukup tambahkan ini ke atas atau bawah dari GLOBAL.ASAX Anda
Application_Start
.sumber
Ketika Anda mengatakan "debug", maksud Anda sebenarnya meluncurkan aplikasi dari server web bawaan Visual Studio untuk debugging, atau maksud Anda melampirkan ke proses di IIS? Jika yang pertama, Anda harus menekan Application_Start, tetapi jika yang terakhir, mungkin sulit untuk berada di proses cukup awal untuk menangkapnya.
sumber
Tutup Visual Studio dan hapus
bin
danobj
folder di proyek web Anda (atau semua proyek dalam solusi).Berikut adalah perintah untuk menghapus folder ini dari semua proyek Anda:
sumber
Saya telah membuat beberapa perubahan berdasarkan "Analisis Kode pada Bangun" dari Visual Studio. Analisis Kode menyarankan "CA1822 Tandai anggota sebagai statis" untuk Application_Start () di Global.asax. Saya melakukan itu dan berakhir dengan masalah ini.
Saya menyarankan untuk menekan pesan Analisis Kode ini, dan tidak mengubah tanda tangan metode / kelas yang secara otomatis dibuat oleh platform yang digunakan untuk bootstrap Aplikasi. Tanda tangan dari metode Application_Start mungkin tidak statis karena suatu alasan.
Saya kembali ke metode-tanda tangan ini dan Application_Start () kembali aktif:
sumber
Saya menghadapi masalah ini ketika menggunakan halaman statis (misalnya index.html) sebagai halaman awal - Aplikasi-Start tidak dipanggil. Saya menemukan bahwa melayani halaman statis sebenarnya tidak memulai aplikasi. Meminta halaman .aspx bisa.
sumber
Pastikan ruang nama di Global.asax dan Global.asax.cs sama. Jika mereka berbeda itu tidak akan menimbulkan kesalahan tetapi tidak akan mencapai breakpoint juga karena tidak menjalankan application_start sama sekali.
sumber
Saya pikir acara mulai aplikasi hanya dipecat ketika permintaan pertama dibuat, apakah Anda memukul situs web Anda (yaitu membuat permintaan)?
sumber
Saya mengalami masalah ini dalam proyek .net 4 formulir web vs2010 proyek dan mencoba semua yang disebutkan di halaman ini. Akhirnya menghapus dan menambahkan global.asax benar-benar menyelesaikan masalah bagi saya.
sumber
Saya menangani masalah yang sama, tidak dapat menangkap Application_Start. Dan alasannya adalah bahwa hal itu tidak dilakukan untuk melakukan missmatch dalam file markup. File markup Global.asax mewarisi kelas lain ...
sumber
Apakah Anda memeriksa pengaturan Proyek? Saya punya masalah ini dan saya punya URL Mulai pergi ke port yang berbeda dari port spesifik server saya. Butuh waktu terlalu lama untuk mencari tahu ...
sumber
Setelah mencoba sebanyak mungkin jawaban lain yang berlaku dalam situasi saya dan tidak beruntung dengan salah satu dari mereka, saya pergi ke properti untuk proyek Web (proyek sisi server untuk aplikasi Silverlight menggunakan Layanan RIA), mengklik "Web" tab dan mengubah Server yang dipilih dari "IIS Lokal" menjadi "IIS Express". (Catatan Saya menggunakan VS2013.) Ini menyelesaikan masalah. Application_Start dijalankan di bawah "IIS Express" tetapi tidak di bawah "IIS Lokal". Menarik...
sumber
Saya mencoba untuk melangkah melalui kode di RegisterRoutes () dipanggil dari Aplikasi mulai dan tidak memukul breakpoint saya. Saya memutuskan Application_Start tidak dipanggil. Saya harus membuat perubahan untuk membuat perubahan dangkal ke App_start / RouteConfig.cs dan menyimpannya sebelum Application_Start dipanggil. Saya kira file-file ini di-cache di suatu tempat dan tidak dipanggil kecuali ada perubahan.
sumber
Masalah saya yang sama telah diatasi dengan Menambahkan referensi
System.Web.Routing
perakitan dalam proyeksumber
Jika Anda menggunakan System.Diagnostics.Debugger.Break (); solusi (yang saya pikir baik-baik saja untuk penggunaan sementara) dan itu "tidak bekerja" pada Mesin Windows 8 Anda. Alasannya adalah bug di Visual Studio "Just in time debugging".
Cara mengatasinya adalah sebagai berikut adalah untuk memperbaiki kunci untuk "Visual Studio Just-In-Time Debugger"
Buka regedit dan buka HKEY_CLASSES_ROOT \ AppID {E62A7A31-6025-408E-87F6-81AEB0DC9347} untuk nilai registri 'AppIDFlags', atur bendera ke 0x8
Info lebih lanjut di sini: http://connect.microsoft.com/VisualStudio/feedback/details/770786/just-in-time-debugging-operation-attempted-is-not-supported
sumber
Dalam kasus saya, membunuh instance Server Pengembangan ASP.NET bawaan melalui baki sistem menyelesaikan masalah.
sumber
Hal-hal aneh dan gila ... tetapi debugging pada mesin server dan pengguna lain membuat IIS Express berjalan di sesi mereka. Saya harus keluar dari pengguna itu untuk mematikan proses IIS Express yang sedang berjalan. Itu tampaknya telah memperbaiki masalah!
Memperbarui
Setelah menghabiskan lebih dari 1 jam mengejar apa yang menyebabkan masalah ... ini kesepakatannya: Saya agak berhasil mengetik
s
dalam<appSettings>
bagian diWeb.config
. Visual Studio mencoba memperingatkan saya diError List
jendela dengan peringatan . Saya akui saya jarang memeriksa peringatan ... harus mulai memeriksanya mulai sekarang. : D Segera setelah saya menghapuss
breakpoint yang terkena terkenaApplication_Start
.sumber
Saya punya masalah ini ketika mencoba menginisialisasi log4net. Saya memutuskan untuk membuat konstruktor statis untuk Global.asax
sumber
Masalah terutama terjadi ketika Anda mencoba untuk memindahkan file Global.asax ke direktori solusi lain. Pindahkan kembali file Global.asax ke lokasi default. Ini akan berfungsi seperti yang diharapkan.
sumber
Tidak ada solusi yang dijelaskan di atas bekerja untuk saya. Namun menginstal ulang paket
menggunakan nuget gui adalah solusi (tidak terlalu bagus)
sumber