Saya menulis layanan REST menggunakan ASP.NET Web API. Saya mencoba mengirim permintaan HttpDelete, namun saya mendapatkan kesalahan berikut:
405 - Kata kerja HTTP yang digunakan untuk mengakses halaman ini tidak diperbolehkan
Saya pikir saya sudah dekat dengan solusinya, saya menemukan bahwa saya harus mengaktifkan manajemen jarak jauh IIS, buka bagian Pemetaan Penangan dan tambahkan kata kerja DELETE ke posisi yang sesuai ... tetapi masalahnya adalah ada banyak posisi berbeda di daftarnya ... (seperti di sini: http://www.somacon.com/p126.php ).
Yang mana yang harus saya edit? Beberapa dari mereka tidak memiliki ekstensi, misalnya "ExtensionUrlHandler-Integrated-4.0" dan saya menambahkan kata kerja DELETE padanya, tetapi masih tidak berfungsi ...
Itu hanya bidikan dalam kegelapan untuk memodifikasi yang satu itu, jadi haruskah saya mengubah posisi yang berbeda? Jika ya, yang mana? Atau mungkin ada hal lain yang harus saya lakukan?
Layanan web yang sama berfungsi dengan baik pada layanan lokal saya, jadi saya kira masalahnya ada pada IIS jarak jauh ...
Salam pembuka
Jawaban:
Penyebab umum kesalahan ini adalah WebDAV . Pastikan Anda menghapusnya.
sumber
Anda tidak perlu menghapus WebDAV, cukup tambahkan baris ini ke web.config:
sumber
Ubah file Web.Config Anda seperti di bawah ini
sumber
Ubah file Web.Config Anda seperti di bawah ini. Ini akan bertindak seperti pesona.
Dalam node
<system.webServer>
tambahkan bagian kode di bawah iniSetelah menambahkan, Web.Config Anda akan terlihat seperti di bawah ini
sumber
Saya memiliki masalah ini dan saya memecahkan yang berikut:
Pilih Situs Backend
dalam tampilan fitur: buka Pemetaan Penangan
sumber
Jika tidak ada solusi di atas yang menyelesaikan masalah Anda seperti dalam kasus saya (masih terjebak dengan modul RestClient saya menghadapi 405) coba minta Api Anda dengan alat seperti Postman atau Fiddler. Maksud saya, masalahnya mungkin ada di tempat lain seperti permintaan berformat buruk.
Saya menemukan bahwa modul RestClient saya meminta 'Put' dengan paremeter Id yang tidak diformat dengan baik:
dari pada
Kebetulan, permintaan berformat buruk kembali 405 - Metode Tidak Diizinkan (IIS 7.5)
sumber
Jarang tetapi mungkin membantu beberapa.
Kami mendapatkan 'Metode tidak diizinkan' 405, pada metode dekorasi HttpPut.
Masalah kami tampaknya tidak umum, karena kami secara tidak sengaja menggunakan atribut [HttpPut] dari System.Web.Mvc dan bukan System.Web.Http
Alasannya adalah, resharper menyarankan versi .Mvc, di mana-seperti biasanya System.Web.Http sudah direferensikan ketika Anda mendapatkan langsung dari ApiController kami menggunakan kelas yang memperpanjang ApiController.
sumber
Saya telah mengalami ini (metode 405 tidak diizinkan) ketika metode posting api web yang saya panggil memiliki tipe primitif untuk parameter, alih-alih tipe kompleks yang diakses dari tubuh. Seperti:
Ini berhasil:
Ini tidak:
sumber
Kesalahan ini berasal dari pengendali file statis - yang secara default tidak memfilter kata kerja apa pun, tetapi mungkin hanya dapat menangani HEAD dan GET.
Dan ini karena tidak ada pawang lain yang naik ke pelat dan berkata bahwa mereka dapat menangani DELETE.
Karena Anda menggunakan WEBAPI, yang karena peruteannya tidak memiliki file dan karenanya ekstensi, tambahan berikut perlu ditambahkan ke file web.config Anda:
Jelas apa yang dibutuhkan bergantung pada classicmode vs integratedmode, dan classicmode bergantung pada bitness. Selain itu, header OPTIONS telah ditambahkan untuk pemrosesan CORS, tetapi jika Anda tidak melakukan CORS, Anda tidak memerlukannya.
FYI, web.config Anda adalah versi lokal untuk aplikasi (atau direktori aplikasi) yang level teratasnya adalah applicationHost.config.
sumber
Jika IIS 8.0, periksa apakah Aktivasi HTTP diaktifkan. Manajer server -> IIS -> Kelola (lihat kanan atas) -> Tambahkan Peran dan Fitur -> ... -> masuk ke konfigurasi WCF dan kemudian pilih Aktivasi HTTP.
sumber
Dalam kasus kami, masalahnya ada pada proses masuk gabungan antara situs .Net dan ADFS. Ketika mengarahkan ke ADFS endpoint yang
wctx
parameter yang diperlukan semua tiga parameter untukWSFederationAuthenticationModule.CreateSignInRequest
metode:rm
,id
, danru
Terima kasih kepada Guillaume Raymond atas tip untuk memeriksa parameter URL!
sumber
Selain semua solusi di atas, periksa apakah Anda memiliki "
id
" atau parameter yang ditentukan khusus dalamDELETE
metode ini cocok dengan konfigurasi rute.Jika Anda mengalami kesalahan 405 berulang kali, lebih baik setel ulang tanda tangan metode ke default seperti di atas dan coba.
Konfigurasi rute secara default akan dicari
id
di URL. Jadi nama parameterid
penting di sini kecuali Anda mengubah konfigurasi rute di bawahApp_Start
folder.Anda dapat mengubah tipe data
id
meskipun.Misalnya metode di bawah ini seharusnya berfungsi dengan baik:
Catatan: Pastikan juga bahwa Anda meneruskan data melalui url, bukan metode data yang akan membawa muatan sebagai konten tubuh.
Contoh:
Semoga membantu.
sumber
Saya akan menambahkan bagi mereka yang terjebak mencoba menjalankan
PHP
(Laravel
dalam kasus mungkin) atauIIS
situasi hosting unik lainnya dengan405 error
, bahwa Anda perlu mengubahverbs
di handler untuk itu untuk situasi khusus itu ... jadi sejak saya menggunakanPHP
saya pergi ke yangPHP
handler dan dalamRequest Restrictions
, kemudianVerbs
tab, tambahkanverbs
yang Anda butuhkan. Ini yang saya butuhkan untuk menambahweb.config
untuk mengaktifkanCORS
diLaravel
.sumber
Semua hal di atas tidak berhasil untuk saya dan saya mengalami masalah pemotretan menggunakan halaman dukungan ( https://support.microsoft.com/en-us/help/942051/error-message-when-a-user-visits-a-website -that-is-hosted-on-a-server) kemudian saya membandingkan file host aplikasi dengan salah satu copy pekerjaan dan sepertinya saya kehilangan banyak penangan dan ketika saya menambahkan kembali ke host aplikasi, itu mulai berfungsi. Saya merindukan semua ini,
sumber