2012-04-19 32 views
6

He buscado entre un montón de diferentes preguntas SO existentes relacionadas con un problema similar, pero no he podido encontrar nada relevante para mi problema."Método 405 no permitido" - al utilizar ASP.NET jQuery ajax POST

Tengo el siguiente código de jQuery:

$.ajax({ 
    url: "Index.aspx/DeclineRequest" 
    , type: 'POST' 
    , contentType: 'application/json; charset=utf-8' 
    , dataType: 'json' 
    , data: JSON.stringify({ RequestId: requestId }) 
}); 

estoy usando una técnica muy similar para enviar datos en otra aplicación web ASP.NET, y esto funciona bien. Sin embargo, esta aplicación está devolviendo el siguiente error:

"NetworkError: 405 Method Not Allowed - http://localhost:57255/ ....."

no puedo encontrar algo diferente en estas 2 aplicaciones, así que estoy confundido en cuanto a por qué esto no está funcionando.

Esta única diferencia entre estas 2 aplicaciones que puedo pensar, es que la que está trabajando es .NET 2.0, y la que no está funcionando es .NET 3.5.

He intentado añadir lo siguiente a mi web.config, pero sigo teniendo el mismo error 405:

<webServices> 
    <protocols> 
    <add name="HttpPost"/>  
    <add name="HttpPostLocalhost"/> 
    </protocols>  
</webServices> 

¿Cómo puedo resolver este problema?

ACTUALIZACIÓN (16:40): He movido esta aplicación a IIS, y el error 405 ya no se devuelve. Nuestro entorno de desarrollo, sin embargo, es solo localhost. ¿Por qué este error solo en localhost?

+0

nos muestras Your'e método 'DeclineRequest'? –

+0

¿Es similar a http://stackoverflow.com/questions/7430492/twitter-search-api-networkerror-405-method-not-allowed ?? –

+0

@ ŁukaszW.pl El método 'DeclineRequest' simplemente está llamando' return' Hello World'' en este momento. No creo que este sea el problema ya que al escribir cualquier nombre de método se devuelve el mismo error. He omitido deliberadamente el método en algunas pruebas para verificar esto. – Curt

Respuesta

0

url: "Index.aspx/DeclineRequest" no debería ser url: "Index.aspx? DeclineRequest" ¿o sí?

Lo siento por la sugerencia bastante obvia, no he visto una url como esa antes. ¿Lo estás reescribiendo?

+2

Ese es un formato de llamada WebMethod que llama al método DeclineRequest definido en Index.aspx codebehind. – Dimitri

+0

¡Gracias! Me pregunto ... –

1

405 errors often arise with the POST method. You may be trying to introduce some kind of input form on the Web site, but not all ISPs allow the POST method necessary to process the form.

All 405 errors can be traced to configuration of the Web server and security governing access to the content of the Web site, so should easily be explained by your ISP.

http://www.checkupdown.com/status/E405.html

me volvía IIS Inicio de sesión para comprobar las solicitudes. También llegar Fiddler para ver lo que está pasando detrás de las escenas

+0

Solo estoy haciendo esto a través de 'localhost' en este momento usando VS 2010, así que no tengo ningún registro de IIS. – Curt

+0

He visto muchas incoherencias entre las formas en que IIS y VS funcionan. Intentaría configurar el host de IIS e ir desde allí. – Dimitri

+0

Sin embargo, esto funciona bien para mi otra aplicación, que se ejecuta en la misma máquina, con un código casi idéntico. Entonces, instalar IIS no parece ser la solución. – Curt

0

verificación de la solicitud ur enviar al servidor
los parámetros a declineRequest es un objeto con una propiedad de RequesId O un nombre string (o algún otro tipo de datos) RequestId primo en este último caso u puede simplemente enviar datos como JSON o una cadena de llanura como RequestId=requestId
por lo intente reemplazar JSON.stringify({ RequestId: requestId }) con algo más apropiado

+0

Incluso sin enviar ningún parámetro, me sale el mismo problema – Curt

+0

¿cuál es exactamente el TIPO del parámetro? ¿es algún tipo que no admite nulos? –

+0

Es un 'Entero ' – Curt

0

Mi conjetura es: en la solicitud que están diciendo que regresaron contenido será JSON, pero estás devolviendo cadena simple que está en formato incorrecto ... intenta volver JSON corregir o cambiar el tipo de contenido a texto sin formato para la prueba ...

-3

suprimir este código de tipo de datos: 'json' de su código y ejecutar

+0

Esa es definitivamente la respuesta incorrecta. datatype no tiene nada que ver con el error CORS. –

Cuestiones relacionadas