2012-04-19 9 views
6

Ho cercato tra un sacco di domande SO SO diverse relative a un problema simile, ma non sono riuscito a trovare nulla di rilevante per il mio problema."405 Metodo non consentito" - quando si utilizza ASP.NET jQuery ajax POST

Ho il seguente codice jQuery:

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

sto usando una tecnica molto simile a inserire i dati sul un'altra applicazione web ASP.NET, e questo funziona bene. Tuttavia, questa applicazione sta tornando il seguente errore:

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

non riesco a trovare nulla di diverso in queste 2 applicazioni, quindi sono confusa sul motivo per cui questo non sta funzionando.

Questa unica differenza tra queste 2 applicazioni, che posso pensare, è che quello che funziona è .NET 2.0 e quello che non funziona è .NET 3.5.

Ho provato ad aggiungere il seguente al mio web.config, ma ho ancora lo stesso 405 errore:

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

Come posso risolvere questo problema?

UPDATE (16:40): ho spostato questa applicazione per IIS, e l'errore 405 non viene più restituito. Il nostro ambiente di sviluppo è tuttavia solo localhost. Perché questo solo errore su localhost?

+0

ci mostri your'e 'metodo DeclineRequest'? –

+0

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

+0

@ ŁukaszW.pl Il metodo 'DeclineRequest' sta semplicemente chiamando' return 'Hello World "' al momento. Non penso che questo sia il problema dato che digitare qualsiasi nome di metodo restituisce lo stesso errore. Ho deliberatamente sbagliato il metodo in alcuni test per verificarlo. – Curt

risposta

0

url: "Index.aspx/DeclineRequest" non dovrebbe essere url: "Index.aspx? DeclineRequest" dovrebbe?

Ci scusiamo per il suggerimento piuttosto ovvio, non ho mai visto un URL simile prima. Stai riscrivendolo?

+2

Questo è un formato di chiamata WebMethod che chiama il metodo DeclineRequest definito in Index.aspx codebehind. – Dimitri

+0

Grazie! Mi sono meravigliato ... –

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

vorrei girare IIS Accesso a controllare le richieste. Anche ottenere Fiddler per vedere cosa sta succedendo dietro le quinte

+0

Sto facendo questo attraverso 'localhost' al momento utilizzando VS 2010, quindi non ho alcuna registrazione IIS. – Curt

+0

Ho notato molte incongruenze tra i modi in cui IIS e VS funzionano. Proverei a configurare l'host IIS e andare da lì. – Dimitri

+0

Funziona comunque bene per la mia altra applicazione, in esecuzione sulla stessa macchina, con codice quasi identico. Quindi installare IIS non sembra la soluzione. – Curt

0

verifica la richiesta ur inviare al server
i parametri al declineRequest è un oggetto con una proprietà di RequesId O un nome string (o qualche altro tipo di dato) RequestId cuz in quest'ultimo caso u può solo inviare dati come JSON o una stringa di pianura come RequestId=requestId
quindi provare a sostituire JSON.stringify({ RequestId: requestId }) con qualcosa di più appropriato

+0

Anche senza inviare alcun parametro, ottengo lo stesso problema – Curt

+0

che cosa è esattamente il TIPO del parametro lì? è un tipo non annullabile? –

+0

È un 'Intero' – Curt

0

la mia ipotesi è: nella richiesta si stanno dicendo che ha restituito contenuti saranno JSON, ma stai tornando stringa normale che è in formato non valido ... Prova di ritorno corretto JSON o modificare il tipo di contenuto in testo normale per il test ...

-3

rimuovere questo codice dataType: 'json' dal codice ed eseguire

+0

Questo non è assolutamente la risposta corretta. datatype non ha nulla a che fare con l'errore CORS. –

Problemi correlati