2010-08-22 4 views
0

Je suis en cours d'exécution dans une erreur de requête incorrecte 400 sur IIS7. J'ai encodé des caractères spéciaux dans la chaîne d'URL. regard de quelque chose comme mon URL ce (n'aime pas% 26):Erreur de requête incorrecte 400 sur IIS7 .NET 3.5

http://www.myjobs.com/a/q-Barnes+%26+Noble 

Ce serait une solution facile si je courais sur .NET 4.0, mais je suis sur un nuage de Rackspace et ne peut fonctionner que sur IIS7. NET 3.5.

C'est ce que je l'utilise dans mon web.config si je sur IIS7 .NET 4.0:

requestPathInvalidCharacters="" 

Quels sont les autres options lors de l'exécution sur IIS7 et .NET 3.5?

+1

J'ai rencontré un problème similaire dans ma [question SO] (http://stackoverflow.com/questions/3536795/asp-net-mvc-search-criteria-as-route-parameter-in-stead- de-querystring-illega). Fondamentalement dans ma situation, j'ai dû recourir à une chaîne de requête - 'http: //www.myjobs.com/a? Q = q-Barnes +% 26 + Noble' –

Répondre

0

La seule façon de faire de telles requêtes est de changer le registre. Pour IIS en cours d'exécution en mode 32 bits, ajoutez la clé DWORD suivante et définissez sa valeur à 1 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ VerificationCompatibility

Si vous utilisez IIS en mode 64 bits, ajoutez ce qui suit DWORD clé et définissez sa valeur à 1 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ ASP.NET \ VerificationCompatibility

Je ne sais pas si votre hébergement enviornment vous donnera accès à ce genre de choses. Je l'ai testé sur IIS 7.5 et j'ai pu faire une requête à/Barnes & Noble/default.aspx en utilisant une URL encodée comme ceci: Response.Redirect (Server.UrlEncode ("Barnes & Noble") + "/default.aspx")

0

Pourquoi encoder des caractères spéciaux dans l'URL? Pourquoi ne pas les convertir tous en un formulaire plus convivial qui ne contient que des caractères alphanumériques et des tirets et stocke cette forme spéciale dans votre base de données. Ou, encore plus facile, inclure l'ID dans l'URL et utiliser cette dernière partie juste pour la rendre lisible par l'homme et favorable au SEO:

par exemple. Cette approche signifie également que vous pouvez modifier votre encodage plus tard (peut-être ajouter un nouveau caractère spécial au mappage alpha) et ne pas avoir de 404.

Questions connexes