Saya menggunakan WebClient
type untuk mengupload file * .cab ke server saya. Di sisi server, saya mendaftarkan penangan HTTP untuk file * .cab dengan metode PUT seperti di bawah ini:
<add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
Tapi saya selalu mendapatkan kesalahan "405 metode tidak diizinkan". Tanggapan mengatakan metode yang diizinkan adalah sebagai berikut:
Headers = {Allow: GET, HEAD, OPTIONS, TRACE
Content-Length: 1293
Content-Type: text/html
Date: Fri, 27 May 2011 02:08:18 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET}
Bahkan jika saya secara eksplisit mengizinkan metode PUT di IIS Request Filtering untuk aplikasi web saya, kesalahan yang sama masih terjadi.
Saya menduga ini adalah masalah terkait IIS. Saya berharap seseorang bisa menjelaskan hal ini untuk saya.
Saya mengaktifkan Pelacakan Permintaan yang Gagal, dan mendapatkan info berikut:
Jadi, saya menghapus WebDAVModule dari IIS saya, semuanya baik-baik saja sekarang ~
Fitur pelacakan IIS sangat membantu.
sumber
Application_BeginRequest
metode, seperti yang disebutkan dalam jawaban ini stackoverflow.com/a/14631068/827168 . Tetapi jawaban Anda lebih baik daripada yang lain karena membantu menemukan masalah daripada menerapkan beberapa tambalan acak :)Handler "WebDAV" has a bad module "WebDAVModule" in its module list
.Saya mengalami masalah ini dengan WebDAV saat menghosting Proyek WebApi MVC4. Saya menyiasatinya dengan menambahkan baris ini ke web.config:
Seperti dijelaskan di sini: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html
sumber
Diambil dari sini dan itu berhasil untuk saya:
1. Buka Manajer IIS.
2. Klik aplikasi Anda.
3. Buka "Pemetaan Penangan".
4. Dalam daftar fitur, klik dua kali pada "WebDAV".
5.Klik "Minta Pembatasan".
6. Di tab "Kata kerja" pilih "Semua kata kerja".
7. Tekan OK.
sumber
Saya mencoba sebagian besar jawaban dan sayangnya, tidak ada yang berhasil menyelesaikannya.
Inilah yang berhasil untuk saya. Ada 3 hal yang harus dilakukan ke situs yang Anda inginkan untuk PUT (pilih situs):
Buka
WebDav Authoring Rules
dan kemudian pilihDisable WebDAV
opsi yang ada di bilah kanan.Pilih
Modules
, temukanWebDAV Module
dan hapus.Pilih
HandlerMapping
, temukanWebDAVHandler
dan hapus.Mulai ulang IIS.
sumber
PUT
mulai bekerja.Menghapus modul WebDAV seharusnya sudah cukup. Ubah saja Web.config Anda:
sumber
Lebih baik hanya menghapus fitur WebDAV yang tidak digunakan. Pergi ke Program dan Fitur => Nyalakan atau Matikan Fitur Windows dan nonaktifkan Penerbitan WebDAV di bawah
Layanan Informasi Internet => Layanan Web Dunia => Fitur HTTP Umum
sumber
Untuk alasan apa pun, menandai WebDAVModule sebagai "hapus" di web.config saya tidak cukup untuk memperbaiki masalah dalam kasus saya.
Saya telah menemukan pendekatan lain yang tidak memecahkan masalah. Jika Anda berada di perahu yang sama, coba ini:
Ini mencegah WebDAV menolak kata kerja yang tidak didukung, sehingga memungkinkan PUT mengalir ke penangan RESTful Anda tanpa gangguan.
sumber
Tip lain dari saya. Saya telah menggunakan PHP + IIS, dan Handler Mappings untuk PHP tidak memiliki kata kerja PUT.
Buka IIS Manager-> Situs Anda-> Handler Mappings-> PHPxx_via_FastCGI-> Request Restrictions-> Verbs, lalu tambahkan PUT.
Itu dia!
sumber
Modul penting lainnya yang perlu dikonfigurasi ulang sebelum PUT dan DELETE berfungsi adalah kata kerja opsi
Lihat juga posting ini: https://stackoverflow.com/a/22018750/9376681
sumber
Saya memiliki masalah yang sama dengan PUT, PATCH dan DELETE tetapi tidak memiliki apa pun yang menginstal WebDav. Resolusi 1 dalam artikel ini akhirnya membantu saya: http://support.microsoft.com/kb/942051
sumber
Saya menggunakan Angular 8 dan .NET core API. Saya menambahkan yang berikut ini di file layanan web.config saya. Itu mengatasi kesalahan saya.
sumber
Bagi saya kesalahan ini tidak akan hilang dan mengizinkan metode PUT, apa pun yang saya lakukan .. menghapus instalan webdav, meletakkan konfigurasi di web.config untuk menghapus webdav dari penangan dan modul, dan mengatur PUT sebagai kata kerja yang diizinkan pada filter permintaan di iis .. dan pastikan pemetaan penangan iis yang menangani permintaan telah dikonfigurasi PUT ..
Masalah saya akhirnya karena pemasangan ASP.NET 4.5 Extensions yang buruk. Menghapus semua yang terkait dengan asp.net dari peran dan fitur server. dimulai ulang. membaca peran dan memulai kembali. semuanya bekerja dengan konfigurasi di atas.
--- Di bawah ini akan membuat PUT diterima, tetapi akan mengirimkannya ke penangan yang salah. - abaikan di bawah ini
akhirnya, menambahkan kata kerja PUT sebagai kata kerja yang diizinkan pada pemetaan penangan TRACE di iis berhasil .. karena saya telah mengaktifkan pelacakan kesalahan yang gagal, dan kata kerja ini tidak mengizinkan kata kerja.
terakhir kali saya memiliki masalah yang sama di IIS server lain, itu karena '/' yang hilang di akhir URL karena menggunakan penangan default tanpa menggunakan dokumen default mungkin dan sekarang saya menyadarinya .. jadi periksa IIS pemetaan handler jika tidak ada yang membantu.
sumber
Saya mengalami masalah ini tetapi tidak ada yang terkait dengan WebDAV yang menjadi masalah. Dalam kasus saya, klien mengirim POST ke www.myServer.com/api/chart. Panggilan ini harus ditangani oleh "ExtensionlessUrlHanlder-Integrated-4.0", namun, entah bagaimana struktur file lokal telah dibuat di direktori server saya "... \ Server \ api \ chart \". Ini berarti bahwa handler "StaticFile" yang dipanggil. Menghapus file lokal tersebut akhirnya menyelesaikan masalah.
sumber
Inilah yang berhasil untuk saya:
Buka IIS dan klik Situs Anda.
1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.
sumber
Untuk Windows server 2012 -> Buka Manajer server -> Hapus Peran dan Fitur -> Peran Server -> Server Web (IIS) -> Server Web -> Fitur HTTP Umum -> Hapus centang Penerbitan WebDAV dan hapus -> Mulai ulang server.
sumber
Jika pool aplikasi IIS berjalan dalam mode klasik, pastikan Anda memiliki yang berikut ini di web.config Anda
sumber
Dalam kasus saya, saya telah memindahkan Web Deploy ke port lain, yang juga merupakan port IIS (bukan 80). Saya tidak menyadarinya pada awalnya, tetapi meskipun tidak ada kesalahan yang berjalan di bawah port yang sama, tampaknya Penyebaran Web paling mungkin merespons terlebih dahulu daripada IIS karena beberapa alasan, menyebabkan kesalahan ini. Saya baru saja memindahkan pengikatan IIS saya ke port lain dan semuanya baik-baik saja. ;)
sumber
Untuk mencegah WebDav diaktifkan sama sekali, hapus entri berikut dari ApplicationHost.config:
<add name="WebDAVModule" />
Entri tersebut terletak di bagian modul.
Lokasi yang tepat dari konfigurasi:
C:\Windows\System32\inetsrv\config\applicationHost.config
sumber
Saya memiliki masalah yang sama, dengan RESTful API yang berjalan pada inti aspnet.
Saya tidak ingin menghapus instalan WebDAV, dan saya mencoba sebagian besar solusi yang dijelaskan di atas. Saya mencoba mengatur kata kerja = "*" baik di situs maupun di server itu sendiri, tetapi tidak berhasil.
Apa triknya bagi saya adalah sebagai berikut:
Manajer IIS -> Situs -> MySite -> HandlerMappings -> aspNetCore -> Edit
-> Permintaan Pembatasan -> Akses -> Tidak Ada (itu adalah Script).
Setelah itu semuanya berfungsi, bahkan jika saya mengganti opsi WebDAV asli.
sumber