Le serveur ne reconnaît pas la valeur de l'en-Tête HTTP SOAPAction
[SoapRpcMethod(Action = "http://cyberindigo/TempWebService/InsertXML",
RequestNamespace = "http://cyberindigo/TempWebService/Request",
RequestElementName = "InsertXMLRequest",
ResponseNamespace = "http://cyberindigo/TempWebService/Response",
ResponseElementName = "InsertXMLResponse",
Use = System.Web.Services.Description.SoapBindingUse.Literal)]
[WebMethod]
public string InsertXML(string Jobs)
{
return "Hi";
}
Le Problème quand je suis accéder à l'aide de XMLHttpRequest il donne l'erreur suivante
Le serveur ne reconnaît pas la valeur de l'en-Tête HTTP SOAPAction: http://Cyberindigo/TempWebService/InsertXML
Vous devez vous connecter pour publier un commentaire.
La source de la prochaine partie de ce post est:
(depuis l'OP ne voulais pas donner l'attribution, et merci à Peter)
Veuillez noter que bakert est l'auteur original du texte, pas de l'OP.
De voir que nulle part sur internet puis-je trouver une explication à cette erreur, je pensais que je voudrais partager le fruit de ma longue recherche de ce bug.
Cela signifie (au moins dans mon cas) que vous accédez à un service web avec du SAVON et de passer un
SOAPAction
paramètre de la requête HTTP qui ne correspond pas à ce que le service attendu.Je suis dans le pétrin parce que nous nous sommes déplacés d'un service web à partir d'un serveur à un autre et donc j'ai changé le “namespace” (ne pas confondre entre services web les espaces de noms et .net les espaces de noms) dans l'appel de fichier C# afin de correspondre au nouveau serveur. Mais le serveur n'a pas de soins à propos de la réalité web de
http://yournamespace.com/blah
il ne se soucie que vous envoyer ce que vous avez dit vous attendons sur le serveur. Il ne se soucie pas si il y a réellement de quoi que ce soit là ou pas.Donc, fondamentalement, le service web a été déplacé de
http://foo.com/servicename
àhttp://bar.com/servicename
mais le “namespace” du service web est resté commehttp://foo.com/servicename
parce que personne ne l'a changé.Et qui a seulement pris environ 4 heures de travail!
Si vous rencontrez un problème similaire, mais ne peut pas travailler ce que je dis ici, n'hésitez pas à m'envoyer un mail sur [email protected] – je ne voudrais pas que mon quatre heures sur n'importe qui!
Je suis d'accord avec Sam, en ce que le SAVON définition ne correspond pas à ce qui est attendu. Voici UNE solution il pourrait l'être, j'ai dû manuellement figure cette erreur pour moi:
Mon problème est que j'ai changé le nom de la méthode web, mais ne modifie pas la "MessageName" dans la balise de métadonnées.
Il devrait être
espère que ça aide quelqu'un
Tout en appelant la .asmx /service web wcf veuillez prendre soin de points ci-dessous:
par exemple Pour le WebService déclaré comme ci-dessous
La requête SOAP doit maintenir le même cas pour l'espace de noms lors d'un appel.Parfois, nous perdons de vue le cas de la sensibilité.
par exemple, de service ci-Dessus peuvent être hébergés à http://84.23.9.65/MyTestService , mais toujours tout en appelant le Service Web à partir d'un client de l'espace de noms doit être la même que l'prolongée classe est d'avoir c'est à direhttp://MyDomain.com/TestService
J'ai eu le même problème, il fixe après quelques vérifications:
<< Cible WebService Existe, mais cette méthode n'est pas eXXXists. >>
Vérifier votre programme de scénario de nouveau...
Juste pour aider quelqu'un sur ce problème, après un après-midi de débogage, le problème est que le service web a été développé avec le framework 4.5 et l'appel à partir d'android doit être fait avec SoapEnvelope.VER12 et pas avec SoapEnvelope.VER11
J'ai eu le même problème. Pour déboguer le problème, j'ai couru Wireshark et la capture de la demande générée par mon code. Ensuite, j'ai utilisé XML Spy essai pour créer une requête SOAP (en supposant que vous avez WSDL) et comparé ces deux.
Cela devrait vous donner un indice ce qui va mal.
J'ai décidé de poster ma question ici parce que j'ai perdu quelques heures, et je pense que, bien que l'on a accepté la réponse est très bon et m'a orienté dans la bonne direction (oui, elle a un voteup), il n'était pas assez détaillée pour expliquer ce qui n'allait pas avec ma demande, au moins dans mon cas.
Je suis à court d'un BPEL module dans OpenESB 2.2 et les Cas de Test de mon Application Composite a échoué avec l'erreur suivante:
Après avoir fait quelques recherches j'ai remarqué que les externes WSDL a tous les indices que nous avons besoin pour résoudre ce problème, par exemple, je suis en utilisant le service web suivant pour valider un numéro de carte de crédit à travers une orchestration de Services Web:
http://www.webservicex.net/CreditCard.asmx?WSDL
Si vous cochez la
<wsdl:operation
éléments, vous verrez qu'il énonce clairement lasoapAction
pour cette opération:Mais, une fois que vous créez l'Application Composite et de construire le projet avec le BPEL qui appelle cette externe WSDL du service, pour quelque raison (bug?), le XML de l'Application Composite Assemblée de Service (CASA) de liaison est généré avec un vide
soapAction
paramètre:Une fois que vous avez copier le soapAction (http://www.webservicex.net/ValidateCardNumber) dans ce paramètre, l'application du scénario de Test correctement et le retour attendu de la réponse Soap.
Donc, c'est une solution que j'ai décidé de document basé sur l'information contenue dans ce blog: http://bluebones.net/2003/07/server-did-not-recognize-http-header-soapaction/.
J'ai eu le même problème après changement de l'espace de noms "tempuri" dans mon Service Web.
Vous devez mettre à jour votre Service de Référence dans le projet qui consomme le service ci-dessus, afin d'obtenir les dernières SAVON définitions.
Ou au moins qui a fonctionné pour moi. 🙂
Nous avait renommé certains de nos webservice projet les espaces de noms et j'ai oublié de mettre à jour le site web httphandlers section de configuration avec l'espace de noms de la renommée des projets.
Mon erreur fixe par répondre à M. John Saunders : http://forums.asp.net/post/2906487.aspx
en bref: la différence entre l'espace de Noms de ws
.asmx.cs avec ws
.wsdl fichiers.
plus tard, le service web de l'espace de noms changé :
donc nous avons référencé (1) dans l'application et le service web est (2).
rendre égal à résoudre votre problème.
J'ai eu la même erreur, j'ai été en mesure de résoudre le problème en supprimant le "Web de Référence" et l'ajout d'un "Service de Référence" au lieu
J'ai eu ce même problème, mais la solution pour moi a été que j'ai été pointant vers le mauvais service web. J'avais mis à jour la référence web correctement. Mais nous stocker l'URl pour le service dans un fichier crypté, et je ne l'ai pas mise à jour le fichier avec le bon service crypté.
Mais toutes ces suggestions m'a vraiment aidé à comprendre où aller pour le débogage.
Merci!
J'ai dû trier sur la capitalisation de mon service de référence, de supprimer les références et re les ajouter à résoudre ce problème. Je ne suis pas sûr si l'un de ces étapes sont superstitieux, mais le problème a disparu.
J'ai eu un problème similaire avec le même message d'erreur:
System.Web.Services.Protocols.SoapException:
Serveur ne reconnaît pas la valeur de l'en-Tête HTTPSOAPAction
:Nous utilisons dynamique URL de nos appels de service web. Nous avons une centrale de configuration du serveur qui gère l'emplacement de tous les appels de service web de sorte que notre code peut s'exécuter en DEV, test ou vivre sans recompilation. L'URL pour un appel de service web pour l'environnement de test était incorrect dans notre configuration de serveur. L'appel de service web a été envoyé à la mauvaise serveur et le mauvais service web.
Donc cette erreur peut être tout simplement le résultat de la requête du service web ne correspond pas au service web appelé.
Il a fallu courir un violon sur le Web Application server de voir que l'appel était pour le mauvais service web.
le problème est dans le Système.Web.Services.Les protocoles.SoapDocumentMethodAttribute
dans le service. S'il vous plaît vérifier. il peut changé.
J'ai eu cette erreur quand j'ai essayé d'appeler une méthode qui n'existe pas. Il n'a existé dans une version plus récente de notre webservice.