ASP.NET MVC Url Itinéraire de soutien (dot)
J'espère que vous pouvez m'aider avec le problème ci-dessous.
Je suis en utilisant ASP.NET MVC 3 sur IIS7 et voudrais que mon application à l'appui de nom d'utilisateur avec des points.
Exemple: http://localhost/john.lee
C'est comment mon Global.asax ressemble: (http://localhost/{nom d'utilisateur})
routes.MapRoute(
"UserList",
"{username}",
new { controller = "Home", action = "ListAll" }
);
Les applications fonctionne quand je accéder à d'autres pages comme http://localhost/john.lee/details etc.
Mais le principal utilisateur de la page ne fonctionne pas, je voudrais que l'application fonctionne comme Facebook où http://www.facebook.com/john.lee est pris en charge.
J'ai utilisé le code ci-dessous et il n'a pas de travail pour moi à tous:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
J'ai été en mesure d'utiliser de code ci-dessous et obtenir l'application d'accepter des points, mais je certainement ne voudrais pas utiliser de code ci-dessous pour de nombreuses raisons, s'il vous plaît dites-moi il y a un moyen de surmonter ce problème.
<modules runAllManagedModulesForAllRequests="false" />
- stackoverflow.com/questions/8163401/dot-symbol-in-url
- J'ai le même problème, mais dans IIS 6.
- Je ne suis pas en mesure de reproduire le problème. Il fonctionne pour moi dans IIS Express (donc il convient également de travailler dans IIS 7.0+). Aussi, vous semblent indiquer une url de la forme
/john.lee/details
mais selon votre définition de la route vous ne pouvez pas spécifier une action. Il utilise toujours leListAll
action. Donc, le problème n'est pas vraiment liée à la dot ici. Il est probablement plus au sujet de vos trajets. - Pas de Darin, vous m'avez mal compris, localhost/john.lee est à l'aide de la route ci-dessus (ListAll), mais /john.lee/détails est à l'aide d'un itinéraire différent bien sûr, mais cela fonctionne. Je pense que cela a quelque chose à voir avec IIS, en permettant à un point sur les noms d'utilisateur, il permettrait à quelque chose comme localhost/par défaut.aspx (valeur par défaut.aspx être un nom d'utilisateur et non dans un fichier sur le dossier racine). J'ai vraiment besoin de trouver un moyen de contourner cela.
- Essentiellement par l'activation des points sur le nom d'utilisateur, quelqu'un du nom d'utilisateur peut être par défaut.aspx alors qu'une autre personne du nom d'utilisateur pourrait être jean.lee mais IIS vont se confondre par ce que je pressume?
- essayez de poster l'intégralité de votre table de routage, ma conjecture est une autre voie est en conflit et à l'origine de problèmes.
- En fait, j'ai commenté TOUTES les autres voies Mondiale.asax, ci-dessus, on est la SEULE à gauche. Si je tape localhost/john.lee il ne fonctionne pas. Si je tape localhost/john.lee/ il fonctionne et la page s'. Comment puis-je faire de sorte qu'il ajoute une barre oblique dans le fond si la barre n'est pas présent sur la barre d'adresse et de ne pas ajouter une barre oblique lorsque ses il y sur la barre d'adresse? peut-être que ce serait un raccourci?
- juste pour être sûr, avez-vous dire que
<modules runAllManagedModulesForAllRequests="false" />
qui fonctionne ou ne fonctionne pas? Faire un échantillon mvc3 avec un parcours très similaire à votre propre fonctionne tant querunAllManagedModulesForAllRequests
est vrai. IIRC, le problème que vous semblez avoir serait causé par IIS essayer de faire un plan de votre url pour un fichier de typelee
nomméjohn
plutôt que de votre itinéraire. - double possible de Points dans l'URL provoque une 404 avec ASP.NET mvc et IIS
Vous devez vous connecter pour publier un commentaire.
J'ai été confronté au même problème. Donc, la meilleure solution pour moi est:
Ajouter un UrlRoutingHandler sur le web.config. Cela nécessite de votre url à être un peu plus précise toutefois (f.e. /Utilisateurs/john.lee).
Cette forces, toutes les url commençant par /Utilisateurs d'être traité comme un MVC url:
Cannot create an abstract class.
pastebin.com/vuQ2WnWZIl suffit d'ajouter cette section Web.config, et toutes les demandes de la route/{*pathInfo} sera géré par le gestionnaire spécifié, même quand il y a des points dans le pathInfo. (prises de ServiceStack MVC Web Hôte.config exemple et cette réponse https://stackoverflow.com/a/12151501/801189)
Devrait fonctionner pour les deux IIS 6 & 7. Vous pourriez assigner des gestionnaires des chemins différents après la "route" en modifiant le chemin d'accès="*" dans "ajouter" éléments
Pour quiconque d'obtenir un "Ne peut pas créer une classe abstraite' exception lors de l'utilisation de la
UrlRoutingHandler
approche, il est probablement dû à:path="/Files/*"
) de votre site web.config déclaration, etJe ne pense pas que le point est le problème ici. Autant que je sache, le seul char qui ne doit pas être le nom d'utilisateur est un /
Sans voir la route qui correspond à
john.lee/details
il est difficile de dire ce qui ne va pas, mais je devine que vous avez un autre itinéraire qui correspond à l'url, la prévention de l'utilisateur les détails de l'itinéraire d'être appariés correctement.Je recommande d'utiliser un outil comme Aperçu de comprendre à quel itinéraire est en cours de correspondance.