Apa yang dulu berfungsi di aplikasi webform.net asp.net saya sekarang melempar kesalahan ini:
System.MissingMethodException: Metode tidak ditemukan
The DoThis
metode adalah pada kelas yang sama dan harus bekerja.
Saya memiliki penangan generik seperti itu:
public class MyHandler: IHttpHandler
{
public void Processrequest(HttpContext context)
{
// throws error now System.MissingMethodException: Method not found?
this.DoThis();
}
public void DoThis()
{
//
}
}
somepage
? Seperti yang 'terdengar' dicatat, kode ini tidak valid. Tolong beri kami cuplikan kode lengkap yang menunjukkan masalah.Jawaban:
Ini adalah masalah yang dapat terjadi ketika ada versi lama dari DLL yang masih ada di sekitar. Pastikan bahwa majelis terbaru dikerahkan dan tidak ada majelis duplikat yang lebih tua bersembunyi di folder tertentu. Taruhan terbaik Anda adalah menghapus setiap item yang dibangun dan membangun kembali / memindahkan seluruh solusi.
sumber
⚠️ Versi Paket Nuget Salah ⚠️
Saya memiliki proyek unit test yang menarik dalam paket akses data EF Nuget internal perusahaan kami dan kode itu menarik paket eksternal yang versinya jauh di belakang versi saat ini.
Masalahnya adalah bahwa pengaturan Nuget untuk paket diatur ke
least version
; dan versi yang lebih lama menang dan digunakan selama operasi ....Oleh karena itu diam-diam mendapat versi yang salah untuk perakitan umum yang digunakan oleh paket dan aplikasi.
💡 Solusi 💡
Dengan Mengatur / memperbarui paket di Nuget untuk menggunakan dan [mendapatkan] yang terbaru , perbaiki masalah.
sumber
Saya mengatasi masalah ini dengan menginstal versi .NET Framework yang benar di server. Situs web ini berjalan di bawah versi 4.0 dan majelis yang dihubungi dikompilasi untuk 4.5. Setelah menginstal .NET Framework 4.5 dan meningkatkan situs web ke 4.5, semua berfungsi dengan baik.
sumber
Restart Visual Studio sebenarnya memperbaikinya untuk saya. Saya pikir itu disebabkan oleh file assembly lama yang masih digunakan, dan melakukan "Clean Build" atau restart VS harus memperbaikinya.
sumber
Saya memiliki ini terjadi pada saya dengan file yang direferensikan di majelis yang sama, bukan dll yang terpisah. Setelah saya mengecualikan file dari proyek dan kemudian memasukkannya lagi, semuanya bekerja dengan baik.
sumber
Saya baru saja menjalankan ini pada proyek .NET MVC. Penyebab utama adalah versi yang bertentangan dari paket NuGet. Saya punya solusi dengan beberapa proyek. Masing-masing proyek memiliki beberapa paket NuGet. Dalam satu proyek saya memiliki versi dari paket Semantic Logging Enterprise Library, dan di dua proyek lain (yang merujuk pertama) saya memiliki versi yang lebih lama dari paket yang sama. Semuanya mengkompilasi tanpa kesalahan, tetapi memberikan kesalahan "Metode tidak ditemukan" yang misterius ketika saya mencoba menggunakan paket.
Cara mengatasinya adalah dengan menghapus paket NuGet lama dari dua proyek, sehingga hanya termasuk dalam satu proyek yang benar-benar membutuhkannya. (Juga saya melakukan pembangunan kembali yang bersih dari seluruh solusi.)
sumber
Periksa Referensi Anda!
Pastikan bahwa Anda secara konsisten menunjuk ke perpustakaan pihak ke-3 yang sama (jangan hanya mempercayai versi, lihat jalannya) di seluruh proyek solusi Anda.
Misalnya, jika Anda menggunakan iTextSharp v.1.00.101 dalam satu proyek dan Anda NuGet atau referensi iTextSharp v1.00.102 di tempat lain Anda akan mendapatkan jenis kesalahan runtime yang entah bagaimana menetes ke dalam kode Anda.
Saya mengubah referensi saya ke iTextSharp di ketiga proyek untuk menunjuk ke DLL yang sama dan semuanya bekerja.
sumber
Jika mengembangkan dengan server NuGet Anda sendiri, pastikan semua versi perakitan semuanya sama:
sumber
juga .. coba "bersihkan" proyek atau solusi Anda dan bangun kembali!
sumber
Sudahkah Anda mencoba mematikan jika dinyalakan kembali? Lelucon di samping itu, menyalakan kembali komputer saya adalah apa yang sebenarnya melakukan trik untuk saya dan tidak disebutkan dalam jawaban lainnya.
sumber
Saya baru saja mengalami masalah ini dan ternyata itu karena saya mereferensikan versi DLL sebelumnya dari proyek UI saya. Karena itu, ketika menyusunnya senang. Tetapi ketika menjalankannya menggunakan DLL versi sebelumnya.
Periksa referensi pada semua proyek lain sebelum berasumsi Anda perlu membangun kembali / membersihkan / memindahkan solusi Anda.
sumber
Dalam kasus saya itu adalah masalah salin / tempel. Saya entah bagaimana berakhir dengan konstruktor PRIVATE untuk profil pemetaan saya:
(perhatikan "publik" yang hilang di depan aktor)
yang dikompilasi dengan sangat baik, tetapi ketika AutoMapper mencoba untuk membuat instance profil, ia tidak dapat (tentu saja!) menemukan konstruktor!
sumber
Saya memiliki skenario yang sama di mana saya mendapatkan pengecualian yang sama dilemparkan. Saya punya dua proyek dalam solusi aplikasi web saya, dinamai, misalnya, DAL dan DAL.CustSpec. Proyek DAL memiliki metode bernama Method1, tetapi DAL.CustSpec tidak. Proyek utama saya memiliki referensi ke proyek DAL dan juga referensi ke proyek lain bernama AnotherProj. Proyek utama saya menelepon ke Method1. Proyek AnotherProj memiliki referensi ke proyek DAL.CustSpec, dan bukan proyek DAL. Konfigurasi Bangun memiliki proyek DAL dan DAL.CustSpec yang dikonfigurasi untuk dibangun. Setelah semuanya dibangun, proyek aplikasi web saya memiliki rakitan AnotherProj dan DAL di folder Bin-nya. Namun, ketika saya menjalankan situs web, folder ASP.NET Sementara untuk situs web memiliki perakitan DAL.CustSpec dalam file-nya dan bukan perakitan DAL, untuk beberapa alasan. Tentu saja, ketika saya menjalankan bagian yang bernama Method1, saya menerima kesalahan "Metode tidak ditemukan".
Apa yang harus saya lakukan untuk memperbaiki kesalahan ini adalah mengubah referensi dalam proyek AnotherProj dari DAL.CustSpec menjadi hanya DAL, menghapus semua file dalam folder Temporary ASP.NET Files, dan kemudian memutar ulang situs web. Setelah itu, semuanya mulai bekerja. Saya juga memastikan bahwa proyek DAL.CustSpec tidak sedang dibangun dengan tidak mencentangnya di Build Configuration.
Saya pikir saya akan membagikan ini jika itu membantu orang lain di masa depan.
sumber
Saya menemukan situasi yang sama di situs web ASP.NET saya. Saya menghapus file yang diterbitkan, memulai kembali VS, membersihkan dan membangun kembali proyek lagi. Setelah publikasi berikutnya, kesalahan itu hilang ...
sumber
Saya memecahkan masalah ini dengan membuat rak dengan perubahan saya dan menjalankan TFS Power Tools 'hangus' di ruang kerja saya ( https://visualstudiogallery.msdn.microsoft.com/f017b10c-02b4-4d6d-9845-58a06545627f ). Kemudian saya menghapus perubahan dan mengkompilasi ulang proyek. Dengan cara ini Anda akan membersihkan semua 'pihak yang menggantung' yang mungkin ada di ruang kerja Anda dan akan memulai dengan yang baru. Tentu saja ini mengharuskan Anda menggunakan TFS.
sumber
Mungkin juga masalahnya adalah dengan parameter atau tipe pengembalian metode yang dilaporkan hilang, dan metode "hilang" itu sendiri baik-baik saja.
Itulah yang terjadi dalam kasus saya, dan pesan yang menyesatkan membuatnya butuh waktu lebih lama untuk mencari tahu masalahnya. Ternyata perakitan untuk tipe parameter memiliki versi yang lebih lama di GAC, tetapi versi yang lebih tua sebenarnya memiliki nomor versi yang lebih tinggi karena perubahan skema penomoran versi yang digunakan. Menghapus versi yang lebih lama / lebih tinggi dari GAC memperbaiki masalah.
sumber
Menggunakan Costura.Fody 1.6 & 2.0:
Setelah membuang banyak waktu untuk melihat jenis kesalahan yang sama dengan semua solusi potensial lainnya yang tidak berfungsi, saya menemukan bahwa versi DLL yang saya tempel sebelumnya berada di direktori yang sama dengan yang saya jalankan. .exe baru dikompilasi dari. Rupanya mencari file lokal di direktori yang sama terlebih dahulu, kemudian mencari ke dalam ke perpustakaan yang tertanam. Menghapus DLL lama berhasil.
Untuk lebih jelasnya, bukan karena referensi saya menunjuk ke DLL lama, itu adalah bahwa salinan DLL lama ada di direktori tempat saya menguji aplikasi saya dari pada sistem yang terpisah dari apa yang dikompilasi.
sumber
Dalam kasus saya itu adalah folder dengan DLL yang lebih tua dengan nama yang sama yang direferensikan dalam file .csproj saya meskipun path secara eksplisit diberikan mereka entah bagaimana dimasukkan oleh karena itu beberapa versi DLL yang sama mengalami konflik.
sumber
Dalam hal masalah disebabkan oleh versi lama perakitan di GAC .
Ini dapat membantu: Cara: Menghapus Majelis dari Tembolok Majelis Global .
sumber
Dalam kasus saya, MissingMethodException adalah untuk metode yang ada di file yang sama!
Namun, saya baru saja menambahkan paket NuGet yang menggunakan. Net Standard2 ke proyek penargetan 4.7.1 saya, yang menyebabkan konflik versi untuk System.Net.Http (4.7.1: versi 4.0.0.0, paket NuGet menggunakan .NET Standar 2 ingin 4.2.0.0). Hal ini tampaknya diketahui sebagai masalah yang seharusnya lebih baik di 4.7.2 (lihat catatan 2) .
Saya telah menggunakan pengalihan yang mengikat seperti ini di semua proyek saya lainnya, karena ada pengecualian segera setelah mencoba memuat 4.2.0.0 yang tidak saya miliki:
Kecuali dalam proyek yang satu ini, di mana tampaknya ia mencoba memuat System.Net.Http hanya saat memanggil fungsi lokal yang menggunakan System.Net.Http.HttpResponseMessage sebagai parameter atau tipe pengembalian (parameter saat debugging, ketik kembali ketika saya menjalankan tes tanpa debugger, juga agak aneh). Dan alih-alih menunjukkan pesan bahwa ia tidak dapat memuat versi 4.2.0.0 dari System.Net.Http, ia mengembalikan pengecualian ini.
sumber
Ini terjadi pada saya menggunakan MVC4, dan saya memutuskan setelah membaca utas ini untuk mengubah nama objek yang melempar kesalahan.
Saya melakukan pembersihan dan membangun kembali dan mencatat bahwa itu melewatkan dua proyek. Ketika saya membangun kembali salah satu dari mereka, ada kesalahan di mana saya memulai fungsi dan tidak menyelesaikannya.
Jadi VS mereferensikan model yang telah saya tulis ulang tanpa bertanya apakah saya ingin melakukan itu.
sumber
Kalau-kalau itu membantu siapa pun, meskipun ini masalah lama, masalah saya agak aneh.
Saya memiliki kesalahan ini saat menggunakan Jenkins.
Akhirnya menemukan bahwa tanggal sistem secara manual diatur ke tanggal di masa depan, yang menyebabkan dll dikompilasi dengan tanggal di masa depan. Ketika tanggal diatur kembali ke normal, MSBuild menafsirkan bahwa file itu lebih baru dan tidak memerlukan kompilasi ulang proyek.
sumber
Saya mengalami masalah ini, dan apa yang bagi saya adalah satu proyek menggunakan Daftar yang ada di contoh. Namespace Sensor dan dan tipe lain mengimplementasikan antarmuka ISensorInfo. Kelas Type1SensorInfo, tetapi kelas ini adalah satu lapisan lebih dalam di namespace di Example.Sensors.Type1. Ketika mencoba untuk membatalkan deserialisasi Type1SensorInfo ke dalam daftar, itu melemparkan pengecualian. Ketika saya menambahkan menggunakan Example.Sensors.Type1 ke dalam antarmuka ISensorInfo, tidak ada lagi pengecualian!
sumber
Saya memiliki hal yang sama terjadi ketika saya memiliki sejumlah proses MSBuild berjalan di latar belakang yang secara efektif crash (mereka memiliki referensi ke versi kode lama). Saya menutup VS dan membunuh semua proses MSBuild dalam explorer proses dan kemudian dikompilasi ulang.
sumber
Saya punya proyek uji yang mereferensikan 2 proyek lain yang masing-masing mereferensikan versi yang berbeda (di lokasi yang berbeda) dari dll yang sama. Ini membingungkan kompiler.
sumber
Dalam kasus saya spotify.exe menggunakan port yang sama yang ingin digunakan proyek api web saya pada mesin pengembangan. Nomor port adalah 4381.
Saya keluar dari Spotify dan semuanya bekerja dengan baik lagi :)
sumber
Saya punya masalah ini ketika metode membutuhkan parameter yang saya tidak tentukan
sumber
Dalam kasus saya, tidak ada perubahan kode sama sekali dan tiba-tiba salah satu server mulai mendapatkan ini dan hanya pengecualian ini (semua server memiliki kode yang sama, tetapi hanya satu yang mulai mengalami masalah):
Tumpukan:
Masalah yang saya yakini rusak AppPool - kami memiliki daur ulang AppPool otomatis yang terjadi setiap hari pada jam 3 pagi dan masalah dimulai pada jam 3 pagi dan kemudian berakhir dengan sendirinya pada jam 3 pagi hari berikutnya.
sumber
Harus berupa bug referensi dari Microsoft.
Saya membersihkan, membangun kembali semua perpustakaan saya dan masih mendapatkan masalah yang sama dan tidak bisa menyelesaikan ini.
Yang saya lakukan hanyalah menutup Aplikasi Visual Studio dan membukanya lagi. Itu berhasil.
Sangat menyebalkan bahwa masalah sederhana seperti itu dapat membutuhkan waktu lama untuk diperbaiki karena Anda tidak akan berpikir bahwa itu akan menjadi sesuatu seperti itu.
sumber
Dalam kasus saya, proyek saya merujuk
Microsoft.Net.Compilers.2.10.0
. Ketika saya beralih keMicrosoft.Net.Compilers.2.7.0
, kesalahan hilang. Benar-benar kesalahan misterius dengan berbagai penyebab.sumber