1
resposta

Error 405 com o método DELETE no Postman

Olá,

criei o método para deleção dos filmes conforme visto na aula, mas ao chamar o endpoint no Postman dá erro 405. Já tentei buscar alguma solução pesquisando no Google, mas não obtive sucesso. Os outros métodos funcionam bem.

[HttpDelete("{id}")]
    public IActionResult DeletaFilme(int id)
    {
        var filme = _context.Filmes.FirstOrDefault(filme => filme.Id == id);
        
        if(filme == null) 
        {
            return NotFound();
        }

        _context.Remove(filme);
        _context.SaveChanges();

        return NoContent();
    }

Erro no Postman: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Anna!

O erro 405 Method Not Allowed indica que o método HTTP utilizado na requisição não é suportado pelo recurso no servidor. No seu caso, é estranho que o método DELETE não esteja sendo permitido, já que você definiu o atributo [HttpDelete] corretamente no seu método DeletaFilme.

Uma possível causa para esse problema pode ser a configuração de rotas ou middlewares no seu projeto ASP.NET Core que esteja impedindo o método DELETE de ser reconhecido. Aqui estão algumas verificações e sugestões que você pode fazer para tentar resolver o problema:

  1. Verifique as Rotas: Confira se as rotas estão configuradas corretamente em seu Startup.cs ou onde você estiver configurando as rotas. Certifique-se de que não há restrições para o método DELETE.

  2. Middleware de CORS: Se você estiver utilizando o middleware de CORS (Cross-Origin Resource Sharing), verifique se o método DELETE está permitido nas configurações de CORS.

  3. WebDAV: Em alguns casos, o WebDAV (um protocolo de comunicação que permite a edição de arquivos em servidores remotos) pode estar habilitado e interceptar chamadas DELETE. Se estiver usando o IIS, verifique se o WebDAV está desabilitado para a sua aplicação.

  4. Configuração do IIS: Se estiver hospedando sua aplicação no IIS, confira se o método DELETE não está sendo bloqueado nas configurações do servidor.

  5. Outros Middlewares: Verifique se não há outros middlewares que possam estar bloqueando o método DELETE.

  6. Logging: Adicione logs no início do seu método DeletaFilme para verificar se a requisição está chegando até ele. Se não estiver, o problema pode estar em alguma parte da configuração da pipeline do ASP.NET Core.

  7. Teste com outra ferramenta: Tente fazer a requisição DELETE usando outra ferramenta, como o curl, para ver se o problema persiste. Isso pode ajudar a determinar se o problema está no Postman ou no servidor.

Aqui está um exemplo de como você pode configurar o CORS para permitir o método DELETE:

services.AddCors(options =>
{
    options.AddPolicy("AllowSpecificOrigin",
        builder => builder.WithOrigins("http://exemplo.com")
                          .AllowAnyHeader()
                          .WithMethods("GET", "PUT", "POST", "DELETE"));
});

E no método Configure:

app.UseCors("AllowSpecificOrigin");

Espero que essas sugestões te ajudem a resolver o problema. Lembre-se de testar as alterações e verificar se alguma delas resolve o erro 405. Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software