“405 method not allowed” - lors de l'utilisation de ASP.NET jQuery ajax POST
J'ai cherché, grâce à des charges de différents DONC des questions liées à un problème similaire, mais je n'ai pas été en mesure de trouver quelque chose de pertinent à mon problème.
J'ai le texte suivant jQuery code:
$.ajax({
url: "Index.aspx/DeclineRequest"
, type: 'POST'
, contentType: 'application/json; charset=utf-8'
, dataType: 'json'
, data: JSON.stringify({ RequestId: requestId })
});
Je suis en utilisant un très technique similaire à publier des données sur un autre ASP.NET application web, et cela fonctionne bien. Cependant, cette application est de retourner le message d'erreur suivant:
"NetworkError: 405 Method Not Allowed - http://localhost:57255/....."
Je ne peux pas trouver quelque chose de différent à propos de ces 2 applications, donc je suis confus quant à pourquoi cela ne fonctionne pas.
Cette seule différence entre ces 2 applications qui je pense, est que celui qui travaille .NET 2.0, et celle qui n'est pas travail est .NET 3.5.
J'ai essayé d'ajouter ce qui suit à mon web.config
, mais j'obtiens toujours la même erreur 405:
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpPostLocalhost"/>
</protocols>
</webServices>
Comment puis-je résoudre ce problème?
Mise à JOUR (16:40): j'ai déplacé cette application pour IIS, et l'erreur 405 n'est plus retourné. Notre environnement de développement est cependant localhost seulement. Pourquoi en serait-il seulement d'une erreur sur localhost?
- Pouvez-vous nous montrer votre e
DeclineRequest
méthode? - Il est similaire à stackoverflow.com/questions/7430492/...??
DeclineRequest
méthode est tout simplement l'appel dereturn "Hello World"
pour le moment. Je ne pense pas que c'est la question que de taper le nom de la méthode renvoie la même erreur. J'ai délibérément mal orthographiés la méthode des tests pour vérifier ce point.
Vous devez vous connecter pour publier un commentaire.
http://www.checkupdown.com/status/E405.html
Je serait à son tour d'enregistrement IIS pour vérifier les demandes. Bénéficiez également de violon pour voir ce qui se passe derrière les coulisses
localhost
à l'heure actuelle avec VS 2010, donc je n'ai pas d'enregistrement IIS.Peut-être en retard à la fête, mais, essayez d'ajouter à votre site Web.Fichier de configuration:
Cet article explique ce que pourrait être la cause du problème:
http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications
url: Index".aspx/DeclineRequest" ne devrait pas être l'url: "l'Index.aspx?DeclineRequest" faut-il?
Désolé pour le plutôt évident suggestion, je n'ai pas vu une url comme ça avant. Vous êtes de la réécrire?
vérifier la demande ur envoi vers le serveur
les paramètres de declineRequest est un objet avec une propriété de
RequesId
OUun
string
(ou tout autre type de données) nomRequestId
parce que dans ce dernier cas, u peut juste envoyer des données comme
JSON
ou une chaîne simple commeRequestId=requestId
donc, essayez de remplacer
JSON.stringify({ RequestId: requestId })
avec quelque chose de plus appropriéInteger
Ma conjecture est la suivante: Dans la demande, vous dites que le contenu retourné sera JSON, mais vous êtes de retour de la plaine de la chaîne qui est en format incorrect... Essayez de retour correcte JSON ou de changer de type de contenu en texte brut pour le test...
supprimer ce code dataType: 'json' à partir de votre code et exécuter