Eu uso o WebClient
tipo para fazer upload de arquivos * .cab para o meu servidor. No lado do servidor, registrei um manipulador HTTP para o arquivo * .cab com o método PUT conforme abaixo:
<add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
Mas sempre recebo um erro "405 método não permitido". A resposta disse que os métodos permitidos são os seguintes:
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}
Mesmo se eu permitir explicitamente o método PUT na Filtragem de Solicitações IIS para meu aplicativo Web, o mesmo erro ainda ocorre.
Suspeito que seja um problema relacionado ao IIS. Espero que alguém possa lançar alguma luz sobre isso para mim.
Ativei o Rastreamento de solicitação com falha e obtive as seguintes informações:
Então, desinstalei o WebDAVModule do meu IIS, está tudo bem agora ~
O recurso de rastreamento do IIS é muito útil.
fonte
Application_BeginRequest
método, conforme mencionado nesta resposta stackoverflow.com/a/14631068/827168 . Mas sua resposta é melhor do que todas as outras porque ajuda a localizar o problema em vez de aplicar algum patch aleatório :)Handler "WebDAV" has a bad module "WebDAVModule" in its module list
.Eu tive esse problema com o WebDAV ao hospedar um projeto MVC4 WebApi. Eu contornei adicionando esta linha ao web.config:
Conforme explicado aqui: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html
fonte
Tirado daqui e funcionou para mim:
1. Vá para o Gerenciador do IIS.
2.Clique em seu aplicativo.
3. Vá para "Mapeamentos do manipulador".
4. Na lista de recursos, clique duas vezes em "WebDAV".
5. Clique em "Solicitar restrições".
6. Na aba "Verbos" selecione "Todos os verbos".
7.Pressione OK.
fonte
Tentei a maioria das respostas e, infelizmente, nenhuma delas funcionou na conclusão.
Aqui está o que funcionou para mim. Existem 3 coisas a fazer no site para o qual você deseja PUT (selecione o site):
Abra
WebDav Authoring Rules
e selecione aDisable WebDAV
opção presente na barra direita.Selecione
Modules
, encontreWebDAV Module
e remova-o.Selecione
HandlerMapping
, encontreWebDAVHandler
e remova-o.Reinicie o IIS.
fonte
PUT
comecei a trabalhar.Remover o módulo WebDAV deve ser suficiente. Basta alterar seu Web.config:
fonte
Melhor apenas remover o recurso WebDAV não utilizado. Vá para Programas e Recursos => Ativar ou Desativar Recursos do Windows e desabilitar Publicação WebDAV em
Internet Information Services => World Wide Web Services => Common HTTP Features
fonte
Por alguma razão, marcar WebDAVModule como "remover" no meu web.config não foi suficiente para corrigir o problema no meu caso.
Eu encontrei uma outra abordagem que se resolve o problema. Se você estiver no mesmo barco, tente o seguinte:
Isso evita que o WebDAV rejeite verbos não compatíveis, permitindo assim que um PUT flua para o manipulador RESTful sem ser molestado.
fonte
Outra dica minha. Usei PHP + IIS e os Mapeamentos de Handler para PHP não tinham o verbo PUT.
Vá para IIS Manager-> Your site-> Handler Mappings-> PHPxx_via_FastCGI-> Request Restrictions-> Verbs, em seguida, adicione PUT.
É isso aí!
fonte
Outro módulo importante que precisa ser reconfigurado antes que PUT e DELETE funcionem é o verbo de opções
Veja também esta postagem: https://stackoverflow.com/a/22018750/9376681
fonte
Tive os mesmos problemas com PUT, PATCH e DELETE, mas não tinha nada com o WebDav instalado. A resolução 1 neste artigo finalmente me ajudou: http://support.microsoft.com/kb/942051
fonte
Eu estava usando o Angular 8 e era uma API .NET core. Eu adiciono o seguinte em meu arquivo web.config de serviço. Isso resolve meu erro.
fonte
Para mim, esse erro não iria embora e permitiria métodos PUT, independentemente do que eu fizesse .. desinstalei o webdav, coloque a configuração em web.config para remover webdav de manipuladores e módulos e configure PUT como um verbo permitido nos filtros de solicitação no iis .. e garantir que os mapeamentos do gerenciador de iis que manipulam a solicitação tenham PUT configurado.
Meu problema foi eventualmente devido à má instalação das extensões ASP.NET 4.5. Removido tudo relacionado ao asp.net das funções e recursos do servidor. reiniciado. readed as funções e reiniciado. tudo funcionou com a configuração acima.
--- O seguinte fará com que PUT seja aceito, mas o enviará para o manipulador errado. - ignorar o abaixo
finalmente, adicionar o verbo PUT como verbo permitido no mapeamento do manipulador TRACE no iis funcionou ... já que eu havia habilitado o rastreamento de erro com falha e esse verbo não estava permitindo o verbo.
da última vez que tive o mesmo problema no IIS de outro servidor, foi devido a uma falta '/' no final da URL, pois ele estava usando um manipulador padrão sem usar o documento padrão provavelmente e agora eu percebi isso .. então verifique o IIS mapeamentos de manipulador, se nada mais ajudar.
fonte
Eu tive esse problema, mas nada relacionado ao WebDAV era o problema. No meu caso, o cliente estava enviando um POST para www.myServer.com/api/chart. Esta chamada deve ser tratada pelo "ExtensionlessUrlHanlder-Integrated-4.0", entretanto, de alguma forma uma estrutura de arquivo local foi criada no diretório do meu servidor "... \ Server \ api \ chart \". Isso significava que o manipulador "StaticFile" estava sendo chamado. Excluir esses arquivos locais finalmente resolveu o problema.
fonte
Aqui está o que funcionou para mim:
Abra o IIS e clique no seu site.
1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.
fonte
Para o servidor Windows 2012 -> Vá para Gerenciador de servidor -> Remover funções e recursos -> Funções do servidor -> Servidor Web (IIS) -> Servidor Web -> Recursos HTTP comuns -> Desmarque Publicação WebDAV e remova-o -> Reiniciar servidor.
fonte
Se o pool de aplicativos do IIS estiver sendo executado no modo clássico, certifique-se de ter o seguinte em seu web.config
fonte
No meu caso, realoquei o Web Deploy para outra porta, que também era a porta IIS (não 80). Não percebi a princípio, mas embora não tenha havido erros ao executar os dois na mesma porta, parece que o Web Deploy estava respondendo primeiro em vez do IIS por algum motivo, causando esse erro. Acabei de mover minha ligação do IIS para outra porta e está tudo bem. ;)
fonte
Para evitar que o WebDav seja ativado, remova a seguinte entrada do ApplicationHost.config:
<add name="WebDAVModule" />
A entrada está localizada na seção de módulos.
Localização exata da configuração:
C:\Windows\System32\inetsrv\config\applicationHost.config
fonte
Eu tive o mesmo problema, com uma API RESTful rodando no núcleo aspnet.
Eu não queria desinstalar o WebDAV e tentei a maioria das soluções descritas acima. Tentei definir os verbos = "*" tanto no site quanto no próprio servidor, mas sem sucesso.
O que funcionou para mim foi o seguinte:
Gerenciador do IIS -> Sites -> Meu site -> HandlerMappings -> aspNetCore -> Editar
-> Restrições de solicitação -> Acesso -> Nenhum (era Script).
Depois disso, tudo funcionou, mesmo que eu substituísse as opções originais do WebDAV.
fonte