Il ne s'agit pas d'une question, mais d'une référence :
Lors de la consommation d'un WebService, j'ai obtenu l'erreur suivante :
Le format de la requête n'est pas reconnu pour une URL se terminant de manière inattendue par /monMéthodeNom
Il ne s'agit pas d'une question, mais d'une référence :
Lors de la consommation d'un WebService, j'ai obtenu l'erreur suivante :
Le format de la requête n'est pas reconnu pour une URL se terminant de manière inattendue par /monMéthodeNom
J'ai trouvé une solution sur ce site web
Il vous suffit d'ajouter les éléments suivants à votre web.config
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
Plus d'informations sur Microsoft
Je pense que tout ce que vous avez à faire est de remplacer <system.web> par <system.webserver>.
Je l'ai gardé tel quel et pour l'instant l'erreur semble avoir disparu. Si je vois à nouveau l'erreur, je déplacerai les configurations des webservices dans la section webserver.
Cela m'a juste empêché de voir l'erreur. Maintenant, ce que je peux voir est juste une page blanche.
Malgré le fait que 90 % des informations que j'ai trouvées (en essayant de trouver une solution à cette erreur) me disent d'ajouter l'option HttpGet
et HttpPost
à la configuration, cela n'a pas fonctionné pour moi... et n'avait pas de sens pour moi de toute façon.
Mon application fonctionne sur de nombreux serveurs (plus de 30) et je n'ai jamais eu à ajouter cette configuration pour aucun d'entre eux. Que ce soit la version de l'application fonctionnant sous .NET 2.0 ou .NET 4.0.
La solution pour moi a été de réenregistrer ASP.NET par rapport à IIS.
J'ai utilisé la ligne de commande suivante pour y parvenir...
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Assurez-vous que vous utilisez la bonne méthode : Post/Get, le bon type de contenu et les bons paramètres (données).
$.ajax({
type: "POST",
url: "/ajax.asmx/GetNews",
data: "{Lang:'tr'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) { generateNews(msg); }
})
Superbe.
Cas 2 - où le même problème peut survenir) dans mon cas, le problème était dû à la ligne suivante :
<webServices>
<protocols>
<remove name="Documentation"/>
</protocols>
</webServices>
Cela fonctionne bien dans le serveur car les appels sont faits directement à la fonction webservice - mais cela échouera si vous exécutez le service directement à partir de .Net dans l'environnement de débogage et que vous voulez tester l'exécution de la fonction manuellement.
Pour mémoire, j'ai obtenu cette erreur lorsque j'ai déplacé une ancienne application d'un serveur à un autre. J'ai ajouté le <add name="HttpGet"/> <add name="HttpPost"/>
au web.config, ce qui a changé l'erreur en :
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at BitMeter2.DataBuffer.incrementCurrent(Int64 val)
at BitMeter2.DataBuffer.WindOn(Int64 count, Int64 amount)
at BitMeter2.DataHistory.windOnBuffer(DataBuffer buffer, Int64 totalAmount, Int32 increments)
at BitMeter2.DataHistory.NewData(Int64 downloadValue, Int64 uploadValue)
at BitMeter2.frmMain.tickProcessing(Boolean fromTimerEvent)
Afin de corriger cette erreur, j'ai dû ajouter les lignes ScriptHandlerFactory à web.config :
<system.webServer>
<handlers>
<remove name="ScriptHandlerFactory" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>
Je ne sais pas pourquoi cela a fonctionné sans ces lignes sur un serveur web et pas sur l'autre.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Pour faciliter la tâche de Google, la traduction allemande du message d'erreur se lit comme suit : " Format de demande inconnu pour une URL se terminant inopinément par '/_myMethodName'. ".
0 votes
Et la traduction chinoise : " URL /monMéthodeNom "