J'ai un point de terminaison webHttp WCF et remarqué aujourd'hui que lorsqu'il est appelé HttpGet avec une longue url ~ 364 caractères au total (http: // etc pris en compte) IIS renvoie une erreur 400 mauvaise demande. Lancer un point d'arrêt dans le code n'est jamais atteint. Si je supprime certains paramètres et que j'ai une URL 354, le service Web s'exécute comme prévu.WCF URL Longueur Causer IIS 400 Bad Request Erreur
Je ne suis pas sûr où la question est depuis urls peut être comme 2k. Je ne poste aucune donnée donc je ne pense pas que je suis en train de toucher une limite de 4 Mo comme de here
Ce qui donne?
Voici quelques trucs xml WCF.
<behaviors>
<endpointBehaviors>
<behavior name="REST">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<endpoint address="" behaviorConfiguration="REST" binding="customBinding" bindingConfiguration="jsonpBinding" contract="Interface"/>
<bindings>
<customBinding>
<binding name="jsonpBinding">
<jsonpMessageEncoding/>
<httpTransport manualAddressing="true"/>
</binding>
</customBinding>
</bindings>
<extensions>
<bindingElementExtensions>
<add name="jsonpMessageEncoding" type="Microsoft.Ajax.Samples.JsonpBindingExtension, service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</bindingElementExtensions>
</extensions>
Je viens enlevé le nom de la fonction de rappel qui a considérablement réduit la taille de l'url et encore jeté une erreur 400. Cela me fait penser qu'il ya une limite de taille WCF sur le texte qui peut être envoyé en tant que paramètre de chaîne.
ici, de quelques trucs du contrat
[OperationContract]
[WebGet(UriTemplate = @"{userName}/layer({layerName})returnAttributes({attributeList})where({attributeName})({op})({attributeValue})", ResponseFormat = WebMessageFormat.Json)]
[JSONPBehavior(callback = "callback")]
DojoGrouping GetAttributes(string userName, string layerName, string attributeList, string attributeName, string attributeValue);
la question est avec AttributeList qui peut être séparés par des virgules.
donc avec un appel url comme
il bustes. Mais si je raccourcis le texte d'attribut de retour, alors il fonctionne correctement. J'ai redémarré la machine après l'avoir ajoutée et je reçois toujours la même erreur. Est-ce le bon endroit pour modifier les paramètres HTTP.sys que WCF et IIS utilisent? Existe-t-il un moyen de tester que WCF est affecté par cette valeur de Registre?
est ici un poste lié sans réponse, mais en disant que les choses de httpsys n'a pas fixé un serveur 64 bits qui est ce que nous utilisons.
Ancien message mais récemment rencontré ce problème. Ce qui précède semble fonctionner uniquement de manière fiable pour IIS7. Sur IIS6 la seule solution qui a fonctionné était le paramètre de registre comme référencé ci-dessus dans l'autre réponse [KB820129] (http://support.microsoft.com/kb/820129) – EdSF