2010-12-10 29 views
24

¿Alguien puede arrojar algo de luz sobre 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:¿Por qué el verbo HTTP DELETE devuelve el error 405 - método no permitido para mi servicio RESTful WCF que se ejecuta en IIS 7.5?

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 ayudaría en absoluto)

Gracias, Corey

Respuesta

21

acabo de pasar un montón de tiempo tratando de averiguar por qué seguí recibiendo 405 Método no permitido cuando se utiliza 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 llamada "WebDAV Authoring". Al hacer clic en eso, puede hacer clic en Configuración WebDAV ... para obtener la página de propiedades. En la sección Solicitud de comportamiento de filtrado, configure Permitir filtro de verbo a Falso parece ser el truco para mí (YMMV).

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

0

Bueno, no estoy seguro si esto es realmente una respuesta a mi pregunta, pero no resuelve 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

45

En caso de que alguien tenga el mismo problema.

Aquí hay otra manera de intentarlo.

en web.config

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

A través de la interfaz gráfica de usuario de IIS, vaya a Módulos ** ** y ** ** asignaciones de controlador para eliminar. Gracias maxisam! – mcNux

+0

Esto funcionó para mí aunque WebDAV ya estaba configurado para permitir DELETE y también se configuró con Permitir filtro de verbos: falso. –

+0

Esto fue todo lo que tuve que hacer para obtener los métodos PUT y DELETE de 405 en mi servicio WCF RESTful. Gracias. – kurt

1

Abra de asignaciones de controlador en IIS su sitio web Gestor

Editar cada manejador que desea borrar con, al hacer clic en Restricciones de solicitudes, elegir la pestaña verbos, a continuación, añadir a la BORRAR La lista "Uno de los siguientes" o, si corresponde en sus inquietudes, permite todos los verbos.

Es posible que tenga que reiniciar su sitio web y/o volver a compilar el código

Cuestiones relacionadas