with not method failed error code allowed wcf rest http-status-code-405

not - ¿Por qué HTTP DELETE el verbo return 405 error-método no permitido para mi servicio RESTful WCF que se ejecuta en IIS 7.5?



request failed with status code 405 (4)

¿Alguien puede aclarar esto? Siento que he perdido todo el día de hoy buscando y buscando en Internet cualquier fragmento de información sobre cómo hacer esto. He creado un servicio RESTful WCF muy simple. Básicamente es una prueba de concepto. Tengo una base de datos simple detrás y solo estoy tratando de hacerlo funcionar para que pueda ver, crear, actualizar y eliminar elementos. En este momento solo tengo vista y trabajo de actualización. Voy a abordar crear más tarde. Por ahora no puedo entender por qué la eliminación no funciona. Casi todo lo que he encontrado hasta ahora me dice que necesito deshabilitar el módulo WebDAV. Hice eso y luego obtuve PUT para trabajar. Pero no puedo hacer que DELETE funcione. Cada vez que intento llamar a DELETE a través de mi servicio, aparece el siguiente error:

El servidor remoto devolvió una respuesta inesperada: (405) Método no permitido.

Parece que en algún lugar de mi servidor no está permitiendo el verbo DELETE. Pero por mi vida no puedo resolverlo. Ya revisé las asignaciones de controladores y el controlador permite todos los verbos para la extensión .SVC. He desactivado WebDAV. No estoy seguro de dónde más buscar. Estoy usando IIS 7.5 en Windows Server 2008 R2.

(Puedo proporcionar el código si fuera de alguna ayuda)

Gracias, Corey


Abra las asignaciones de controladores de su sitio web en el Administrador de IIS

Edite cada controlador con el que desee BORRAR, haga clic en Solicitar restricciones, elija la pestaña Verbos, luego agregue SUPRIMIR a la lista "Uno de los siguientes" o, si corresponde, permita todos los verbos.

Es posible que deba reiniciar su sitio web y / o recompilar su código


Bueno, no estoy seguro de si esto es realmente una respuesta a mi pregunta, pero sí resolvió el problema. Simplemente comencé un nuevo proyecto en Visual Studio y esta vez utilicé la plantilla de servicio .NET REST que encontré en línea. Luego transferí el código anterior que tenía de mi intento anterior y lo usé en el nuevo proyecto. Funcionó a las mil maravillas. Los cuatro verbos funcionan correctamente ahora (GET, PUT, POST y DELETE). Entonces está funcionando ahora.

Corey


En caso de que alguien tenga el mismo problema.

Aquí hay otra manera de probar.

en web.config

<system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> </handlers> </system.webServer>


Acabo de pasar un montón de tiempo tratando de entender por qué sigo obteniendo el Método 405 No Permitido cuando uso el verbo DELETE. Todo lo que leí decía para desinstalar WebDAV de IIS, pero eso parecía romper IIS en que todos los sitios daban 503 errores. Lo reinstalé, luego busqué en IIS algún ajuste.

Resulta que WebDAV es el problema, y ​​tiene un nodo en la página de características de IIS llamado " WebDAV Authoring ". Al hacer clic en eso, puede hacer clic en Configuración de WebDAV ... para obtener la página de propiedades. En la sección Solicitud de comportamiento de filtrado, establezca Permitir filtrado de verbos en Falso, pareció hacer el truco para mí (YMMV).

Este parecía ser un resultado popular cuando busqué una solución en Google, así que pensé en agregar a la lista de soluciones sugeridas.