2010-06-22 3 views
0

J'ai un webservice pour donner accès à certaines ressources sur un réseau. Le service a une méthode pour rechercher la ressource et retourne le chemin de la ressource. Une autre méthode, envoyer à la demande au webservice avec ce chemin.Longues URI compliquées

Je tente de transmettre le chemin UNC entier (codé avec la méthode HttpServerUtlility.UrlTokenEncode) au service Web. L'URI qui en résulte est très long (331 caractères) et j'obtiens "HTTP 400 Bad Request".

Comment gérer des URI aussi longues? Si mon adresse URI est plus courte d'environ 10 caractères, la demande est transmise. Malheureusement, la taille de l'URI est variable et peut être plus dans certains cas. Quels changements dois-je faire? Y a-t-il des paramètres dans le fichier de configuration pour autoriser les longs URI?

+0

331 caractères est pas très long. Vous avez probablement un autre problème. –

Répondre

1

Énumérer les ressources auxquelles vous voulez donner accès et y stocker une table de dictionnaire/sql indexée par guid.

ex:

3941dbffc1b54581837010a42b42635d = //server/path/to/file 

la première méthode retournerait le guid, et le second regarderait le guid pour trouver le fichier

+0

Notez qu'il n'est pas nécessaire de créer le mappage à l'avance. Chaque fois qu'une ressource est demandée pour la première fois, créez un mappage pour elle, puis utilisez ce mappage à partir de ce moment. Si les clients doivent mettre en cache le guid, assurez-vous de le stocker dans un état persistant afin qu'il puisse être récupéré lorsque votre serveur est redémarré, etc. – eeeeaaii

+0

Existe-t-il un autre moyen? Je ne veux pas rechercher un guid donné à chaque fois. – Debby

+0

Je suppose que s'il n'y a que quelques répertoires où les ressources sont situées, vous pouvez utiliser un int pour la recherche d'annuaire et le nom de fichier. Ou si vous pouvez être certain que les fichiers portent un nom unique, vous pouvez simplement utiliser le nom du fichier. Si la longueur du guid est trop grande pour vous, vous pouvez facilement utiliser quelque chose comme ShortGuid: http://blog.muonlab.com/2010/03/24/shortening-guids-in-mvc-uris/ –