ASP.NET url max PATH limit
j'ai trouvé un problème avec ASP.NET ce que je sais au moins a fait tomber une autre personne. Nous essayions d'utiliser un HttpModule pour gérer le Joker demandes à une application web. L'url générée est dynamique et peut potentiellement plusieurs centaines de caractères. Malheureusement, il n' semble être une limitation dans aspnet_isapi.fichier dll qui limite la longueur du chemin dans l'url vers MAX_PATH qui est codé en dur à 260 caractères.
a quelqu'un d'autre a couru dans tout cela et trouvé un moyen de contourner cette limite? Les paramètres de la chaîne de requête ne sont pas une option.
Merci, Greg Ballard
7 réponses
C'est un problème connu avec aspnet_isapi.dll et il n'existe actuellement aucune solution de contournement. La raison pour laquelle vous ne voyez pas ce problème lors de l'exécution de votre site dans le Visual Studio webserver intégré (alias Cassini) est que tout est géré en code et ne dépend pas d'aspnet_isapi.DLL.
cela sera abordé dans une future version de ASP.NET.
j'ai fini par utiliser ce qui suit sur le web.config pour résoudre ce problème en utilisant Mvc2 et .net Framework 4.0
<httpRuntime maxUrlLength="1000" relaxedUrlToFileSystemMapping="true" />
le problème se trouve en fait dans Windows, pas ASP.NET. Windows a défini MAX_PATH à 260 et quand IIS prend une requête pour un nom de fichier plus long, il échouera. Vous avez probablement déjà trouvé cet article de KBase, mais pour n'importe qui d'autre: http://support.microsoft.com/kb/q177665 / . La Section S'applique à: montre que C'est le comportement attendu de NT 3.51 jusqu'à Vista et Server 2003.
quant à une solution de contournement, j'ai eu une situation similaire, mais nous avons abandonné nos tentatives d'éviter un paramètre de chaîne de requête et nous l'avons fait quand même.
Merci pour votre réponse. Bien que je n'ai pas trouvé cet article exact, j'avais trouvé similaire. Toutefois, il ne s'agit pas d'une limitation dans le SII. Vous pouvez passer un chemin plus long dans la requête à IIS et il retournera la réponse correcte. Vous pouvez vérifier en essayant avec une page html simple. Le problème ne se produit qu'avec aspnet_isapi.dll pour traiter les demandes. Même le serveur de débogage intégré dans visual studio peut gérer des chemins plus longs que 260.
@Haacked:
Phil, vous mentionnez que c'est un problème de aspnet_isapi.DLL. Cela ne signifie-t-il pas que cette question ne devrait pas exister en mode de pipeline intégré IIS7?
D'après ce que j'ai entendu, cependant, ( http://forums.iis.net/t/1105360.aspx ).
je suis en train de rencontrer le même problème, et je me sens un peu en forme. Il semble que ASP.NET le routage est affecté. Donc, n'importe ASP.NET MVC application doit avoir des URLs plus courtes que 260, après quoi il doit revenir à querystrings, ce qui ressemble à un 180 complet!
(Désolé pour la réponse en commentant... pas assez de rep pour commenter encore: ()
la clé de registre UrlSegmentMaxLength peut être utilisée pour augmenter le maximum de Windows par défaut de 260 caractères par segment D'Url dans les requêtes HTTP entrantes:
- clé:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters
- valeur:
UrlSegmentMaxLength
- Type: REG_DWORD
- Données: (votre nouveau segment D'Url désiré longueur maximale autorisée, par exemple 4096)
la valeur maximale autorisée est 32766. Si un plus grand la valeur est spécifiée, elle sera ignorée. (Crédit: Juan Mendes)
plus d'informations sur http.paramètres sys: http://support.microsoft.com/kb/820129
redémarrer le PC est nécessaire pour faire un changement à ce réglage prendre effet. (Crédit: David Rettenbacher, Juan Mendes)
source originale pour cette réponse: https://stackoverflow.com/a/7817739/12484
vous pouvez utiliser une URL-rewriting ISAPI telle que IIRF pour réécrire l'URL en quelque chose que l'aspnet_isapi peut traiter.