Saya menghargai bantuan apa pun dalam hal ini karena situs ini seharusnya ditayangkan malam ini!
Saya memiliki pengontrol api web dengan metode Hapus. Metode ini dijalankan dengan baik di mesin lokal saya yang menjalankan IIS Express (Windows 8) tetapi segera setelah saya menyebarkannya ke server IIS langsung (Windows Server 2008 R2) itu berhenti bekerja dan menampilkan pesan kesalahan berikut:
Kesalahan HTTP 405.0 - Metode Tidak Diizinkan Halaman yang Anda cari tidak dapat ditampilkan karena metode yang tidak valid (Kata Kerja HTTP) sedang digunakan
Saya telah melihat-lihat web untuk mencari solusi dan saya menerapkan yang paling masuk akal. Konfigurasi web saya memiliki pengaturan berikut:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Saya juga mencoba mengubah Pemetaan Penangan dan Meminta Pemfilteran di IIS tidak berhasil. Harap dicatat bahwa Aturan Penulisan WebDAV di IIS tampaknya dinonaktifkan.
Setiap ide akan sangat dihargai Terima kasih.
Dalam beberapa kasus, menghapusnya hanya dari modul dapat menghasilkan kesalahan berikutnya:
solusi disarankan di sini . Juga perlu menghapusnya dari penangan.
sumber
Dalam kasus saya, tidak ada solusi di atas yang berfungsi. Ini karena saya telah mengubah nama parameter dalam
Delete
metode saya .Saya punya
dari pada
Saya perlu menggunakan
id
nama karena itulah nama yang dideklarasikan diWebApiConfig
file saya . Catatid
nama di baris ketiga dan keempat:Saya mendapat solusi ini dari sini .
sumber
Javascript untuk
DELETE
kata kerja HTTP harus seperti ini:Jangan tidak menggunakan sesuatu seperti ini:
seperti saat Anda menggunakan
POST
metode ini.sumber
Setelah mencoba hampir semua solusi di sini, ini berhasil untuk saya. Tambahkan ini di file konfigurasi API Anda
sumber
Jika Anda menggunakan IIS 7.0 atau versi yang lebih baru. Masalah ini terutama terkait dengan modul ekstensi WebDAV di server IIS. ini terjadi saat Menggunakan tindakan Kirim ATAU hapus.
Silakan coba di bawah pengaturan di konfigurasi web
sumber
Saya juga mengalami masalah yang sama, saya menelepon WebAPi dan mendapatkan kesalahan ini. Menambahkan konfigurasi berikut di web.config untuk layanan memecahkan masalah saya
di file web.config memecahkan masalah saya. Ini adalah Bagaimana saya menelepon dari sisi klien
sumber
Buka file applicationHost.config (biasanya di bawah C: \ Windows \ System32 \ inetsrv \ config) dan komentari baris berikut di applicationHost.config
1) Di bawah <handlers>:
2) Juga beri komentar tentang modul berikut yang dirujuk oleh penangan di atas di bawah <modules>
sumber
Dalam kasus saya, saya merindukan untuk menambahkan
{id}
ke[Route("")]
dan aku punya kesalahan yang sama. Menambahkan itu memperbaiki masalah saya:[Route("{id}")]
sumber
Saya mengalami kesalahan 405 Metode Tidak Diizinkan karena saya telah menghilangkan untuk membuat metode Hapus pada pengontrol WebApi publik.
Butuh waktu lama bagi saya untuk menemukan ini (terlalu lama!) Karena saya akan mengharapkan kesalahan Tidak Ditemukan dalam kasus ini, jadi saya salah berasumsi bahwa metode Hapus saya ditolak.
Alasan Tidak Diizinkan daripada Tidak Ditemukan adalah karena saya juga memiliki metode Dapatkan untuk rute yang sama (yang akan menjadi kasus normal saat menerapkan REST). Fungsi Get publik dicocokkan dengan perutean dan kemudian ditolak karena metode http yang salah.
Kesalahan sederhana yang saya tahu tetapi ini dapat menghemat waktu orang lain.
sumber
Hanya untuk menambahkan. Jika ini adalah konfigurasi Anda
tolong terus lakukan seperti yang dikatakan Hugo, dan jangan setel atribut Route ke metode get controller, ini memberi masalah dalam kasus saya.
sumber
Saya memiliki masalah serupa tetapi untuk PUT - tidak ada saran lain yang berhasil untuk saya.
Namun saya menggunakan
int
daripada defaultstring
untuk id. menambah{id:int}
rute memecahkan masalah saya.sumber
Kami harus menambahkan tajuk khusus ke web.config kami karena permintaan kami memiliki banyak tajuk yang membingungkan respons API.
sumber
Atribut [HttpPost] di atas metode Hapus memecahkan masalah ini untuk saya:
sumber
data
(yaitu isi permintaan) daripadaparams
(yaitu url permintaan) di sisi klien.