Toujours obtenir "Format de la requête n'est pas reconnu pour l'URL se terminant inopinément dans ..."
Salutations,
Je l'ai cherché partout et à chaque réponse que je vois me dit de mettre ce qui suit dans mon web.config:
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
Donc je l'ai fait et je suis encore en train de l'erreur.
Voici le script de ma page web:
<script>
$(function () {
$('#btn').click(
function () {
CallHome();
}
);
});
function CallHome() {
$.ajax({
type: "POST",
url: "HelloWorld.asmx/HelloWorld",
dataType: "xml",
data: "{}",
contentType: "xml",
success: function(data) {
alert(data);
}
});
}
</script>
Et le WebService.vb:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Web.Script.Services
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class HelloWorld
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
End Class
J'ai créé un nouveau projet web afin de réduire au maximum mon exemple au minimum. Quelque part je suis vissage! Pouvez-vous m'aider?
MERCI!
Mise à JOUR: Type de nouveau à fiddler... mais ici, les en-têtes de l'ajax post:
OPTIONS http://localhost:49891/HelloWorld.asmx/HelloWorld HTTP/1.1
Host: localhost:49891
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: null
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
Access-Control-Request-Headers: Content-Type, Accept
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Et voici les en-têtes, juste quand je suis à une forme normale post (qui fonctionne):
POST http://localhost:49891/HelloWorld.asmx/HelloWorld HTTP/1.1
Host: localhost:49891
Connection: keep-alive
Referer: http://localhost:49891/HelloWorld.asmx?op=HelloWorld
Content-Length: 0
Cache-Control: max-age=0
Origin: http://localhost:49891
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
Content-Type: application/x-www-form-urlencoded
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: OriginalGUID=2d9e0303-754d-4871-a875-9e184701e91d
Pas sûr si c'est utile...
Mise à JOUR 2:
Et voici la réponse d'erreur du serveur:
HTTP/1.1 500 Internal Server Error
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 28 Mar 2011 05:06:18 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 4444
Connection: Close
<html>
<head>
<title>Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'.</title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
</head>
<body bgcolor="white">
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'.</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
<br><br>
<b> Exception Details: </b>System.InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'.<br><br>
<b>Source Error:</b> <br><br>
<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code>
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.</code>
</td>
</tr>
</table>
<br>
<b>Stack Trace:</b> <br><br>
<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>
[InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'.]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +518909
System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) +212
System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated) +47
System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +203
System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +128
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
</pre></code>
</td>
</tr>
</table>
<br>
<hr width=100% size=1 color=silver>
<b>Version Information:</b> Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
</font>
</body>
</html>
<!--
[InvalidOperationException]: Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'.
at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)
at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
-->
source d'informationauteur Dave
Vous devez vous connecter pour publier un commentaire.
Je cherchais une solution à ce problème et trouvé cette question, et bien que je vous ferais partager ma solution de contournement/hack. Je suis l'aide de services web asmx dans sharepoint et avait un besoin pour une asmx méthode pour répondre correctement à une requête HEAD (apparemment, l'itunes store ne une TÊTE de demander à votre flux RSS url avant de faire une requête GET pour télécharger les aliments). En faisant quelques recherches sur google, j'ai trouvé que les services web asmx ne prennent pas en charge les requêtes HEAD, qui semble être correct http://forums.asp.net/t/1442810.aspx/1
Sachant asmx et la TÊTE n'a pas bien joué ensemble et je n'ai pas envie de tout refaire dans WCF, j'ai essayé de comprendre le hack de la moindre résistance. Après avoir discuté avec l'équipe, nous avons décidé de créer un module HTTP qui regardent de la TÊTE aux demandes de services web asmx et aller de l'avant et faire la demande sur le serveur et il suffit de retourner les têtes. Je sais que c'est un peu du gaspillage mais il semble que cela fonctionne aussi bien que j'ai prévu sur la base de mes tests de ROULAGE/firebug. Voici la plupart du code pour le module HTTP.
Êtes-vous "Bonjour le Monde" quand vous frappez ce service à partir du navigateur?
Aussi, êtes-vous en manque une fin "/" dans l'url?
Sont à votre service web et votre page web dans la même solution, ou êtes-vous à court de deux serveurs? J'ai eu le problème lors de ma page web a été d'appeler un service web sur un autre serveur. Cela provoque des problèmes d'autorisation avec Javascript.
Si vous l'exécutez sur un autre serveur que vous pourriez avoir à créer un proxy de service web dans votre solution contenant la page web. Ce service doit appeler le service web dans votre autre solution. À partir de votre page web que vous appelez le local de service web qui va rediriger vos appels vers l'un sur l'autre serveur.
J'ai hate de poster des réponses à des problèmes que je ne comprends pas vraiment, mais j'ai récemment rencontré ce problème et j'ai pensé que je devais partager ma curieuse solution.
J'ai eu un webservice qui avait fonctionné pendant des mois et tout à coup commencé à lancer le "format de la Requête n'est pas reconnue..." l'exception". Le service a déjà été configuré correctement pour que GET et POST protocoles de sorte que n'était pas la question. J'ai pensé que peut-être un autre coéquipier avait fait un site web.config changement, mais ce n'était pas le cas non plus.
La solution que j'ai couru à travers, par accident, a été de laisser tomber un nouveau site web vide.fichier de config dans le dossier qui contient le webservice qui cause une configuration non valide erreur. Lors de la suppression du site web vide.fichier de config, le webservice comme par magie a commencé à travailler à nouveau. Je ne comprends pas pourquoi il a rompu en premier lieu, et je ne suis pas 100% clair sur les raisons de ce qu'il est corrigé, mais il l'a fait. YMMV!
Sûrement, ce post est venue trop tard pour Dave, mais pourrait être utile à quelqu'un qui reçoit ce message.
J'ai été le tester un service web dans Internet Explorer et venant de nulle part, il commence à montrer cette erreur à chaque fois que je invoquer un service web.
Un peu de débogage, après j'ai trouvé que j'ai installé une application indésirable appelé Lucky Leap. cela ajoute une extension pour Internet Explorer qui déclenche le message d'erreur.
Je l'ai désinstallé (Panneau de configuration -> Programmes (ou Ajout/suppression de Programmes) -> Désinstaller un Programme) et a réussi de nouveau à faire appel à mon service web sans erreurs.
J'espère que cette aide,