WCF GET URL Limite de longueur Problème: Demande incorrecte - URL non valide

J'ai essayé d'accéder à un Service WCF via AJAX de jQuery appel à la méthode GET. Alors, parfois, l'URL est longue avec des paramètres.

Lorsque les paramètres devient long, jQuery AJAX d'échec de l'Appel, et ne renvoie rien. Je mets donc un point de rupture et a pris l'URL à tester. Lorsque j'essaie la même URL dans le navigateur (j'ai essayé FireFox et Chrome), il renvoie les éléments suivants lors de la longueur de l'URL est trop longue.

Bad Request - URL non Valide

Erreur HTTP 400. L'URL de la requête n'est pas valide.

J'ai vérifié la limitation de longueur ainsi. Lorsque le nombre de caractères dans l'URL (en format codé) dépasse 1011 caractères (y compris http://) seulement, je reçois le message d'erreur.

Quelqu'un a la même situation et a trouvé une solution à cela? Est-il Windows Limitation ou Peut-il être géré par le biais de tous les paramètres par programme?

J'ai essayé la méthode POST, mais je ne sais pas, je ne pouvais pas le faire fonctionner. Parce qu'il a besoin de quelques web.les modifications de configuration.

MODIFIER

L'URL, j'ai Testé pour Générer l'Erreur

http://localhost:64973/Member.svc/SaveMemberWithDetail/%7B%22ID%22%7C%222%22,%22TypeID%22%7C%222%22,%22Title%22%7C%22Mr.%22,%22FirstName%22%7C%22Firnas%22,%22MiddleName%22%7C%22%22,%22LastName%22%7C%22Aliyar%22,%22Gender%22%7C%221%22,%22DateOfBirth%22%7C%222000-01-01%22,%22Nationality%22%7C%22Sri%20Lankan%22%7D/%5B%7B%22AddressLine1%22%7C%22Changed%20Address%20Line1%22,%22AddressLine2%22%7C%22Colombo%22,%22City%22%7C%22Colombo%2010%22,%22State%22%7C%22WP%22,%22PostCode%22%7C%2201000%22,%22CountryID%22%7C%221%22,%22ID%22%7C%227%22,%22TypeID%22%7C%221%22%7D%5D/%5B%7B%22Telephone%22%7C%22015154645%22,%22TypeID%22%7C%221%22%7D%5D/%5B%7B%22EmailAddress%22%7C%22gen1@dfs%22,%22ID%22%7C%2226%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%22gen2@jfasd%22,%22ID%22%7C%2227%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2228%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2229%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2229%22,%22TypeID%22%7C%221%22%7D%5D/%7B%7D/481

Clair version d'URL:

http://localhost:64973/Member.svc/SaveMemberWithDetail/{"ID"|"2","TypeID"|"2","Title"|"Mr.","FirstName"|"Firnas","MiddleName"|"","LastName"|"Aliyar","Gender"|"1","DateOfBirth"|"2000-01-01","Nationality"|"Sri Lankan"}/[{"AddressLine1"|"Changed Address Line1","AddressLine2"|"Colombo","City"|"Colombo 10","State"|"WP","PostCode"|"01000","CountryID"|"1","ID"|"7","TypeID"|"1"}]/[{"Telephone"|"015154645","TypeID"|"1"}]/[{"EmailAddress"|"gen1@dfs","ID"|"26","TypeID"|"1"},{"EmailAddress"|"gen2@jfasd","ID"|"27","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"28","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"}]/{}/481

Mes Paramètres sont définis, des Objets Json. Je ne pense pas que l'un des personnages à l'origine du problème, parce que, si je viens de le réduire à quelques caractères alpha numériques, à moins que la limite, il fonctionne.

Je suis en cours d'exécution de mon application dans Visual Studio Premium 2012 dans Windows 8 Professionnel, il est donc .NET 4.5 et IIS Express est Venu avec elle.

D'Autres Recherches

Quand j'essaie de les étudier de plus, ce n'est pas la limitation que j'ai déjà mentionnés, qui est la longueur de l'url complète. Mais, il y a une limitation de la longueur de chaque paramètre qui est de 260 caractères.

Donc, je ne suis pas sûr URL longueur totale, mais chaque paramètre (séparés par des "/") a la limite. Le problème avec l'URL ci-dessus que j'ai posté est l'Adresse Email JSON paramètre est de 261 caractères, donnée ci-dessous.

[{"EmailAddress"|"gen1@dfs","ID"|"26","TypeID"|"1"},{"EmailAddress"|"gen2@jfasd","ID"|"27","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"28","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"}]

Si je supprime 1 caractère de ce fait, il fonctionne.

Est un Navigateur Limitation? Limitations des systèmes d'exploitation?

MISE À JOUR: SOLUTION

J'ai Trouvé une solution qui a fonctionné pour moi, quand je fais des recherches supplémentaires sur ce. Je suis à jour ici, car il pourrait être utile pour d'autres personnes qui viennent à travers cette question.

C'est un Paramètre IIS

Le problème est que, la limite de caractères par défaut de chaque paramètre dans l'url REST est de 260 qui est définie dans le registre.

Donc, vous devez mettre à jour le registre d'augmenter cette limite de taille où le Serveur IIS /IIS Express est en cours d'exécution.

Qui suit est l'emplacement de Registre:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters

Et le nom de la valeur est UrlSegmentMaxLength. Si elle n'existe pas, créez-en un avec le Type de REG_DWORD. Et de spécifier une valeur plus élevée pour value data comme 1000 en hexadécimal ou 4096 en décimal.

C'est un http.sys le réglage. Plus sur http.sys paramètres : http://support.microsoft.com/kb/820129

Assurez-vous que vous redémarrez le serveur/la machine pour appliquer les modifications du registre.
Et c'est tout.

source d'informationauteur Firnas