J'ai une application web asp.net et maintenant les utilisateurs peuvent y accéder en mettant int www.webdomain.com/page.aspx?usename=myusername. Je voudrais le changer pour www.webdomain.com/username. Merci pour toute aide.comment faire une URL de réécriture dans asp.net avec juste un nom d'utilisateur
Répondre
Exemple IRouteConstraint:
public class IsUserActionConstraint : IRouteConstraint
{
//This is a static variable that handles the list of users
private static List<string> _users;
//This constructor loads the list of users on the first call
public IsUserActionConstraint()
{
_users= (from u in Models.Users.Get() select u.Username.ToLower()).ToList();
}
//Code for checking to see if the route is a username
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return _users.Contains((values["username"] as string).ToLower());
}
}
Et, pour enregistrer l'itinéraire dans le Global.asax:
routes.MapRoute(
"User Profile", // Route name
"{username}",
new { controller = "User", action = "Index", id = UrlParameter.Optional },// This stuff is here for ASP.NET MVC
new { IsUserAction = new IsUserActionConstraint() } //Your IRouteconstraint
);
Dans mon cas, ma liste d'utilisateurs ne change jamais au cours du cycle de vie de l'application afin que je puisse Cachez-le en utilisant une liste statique. Je suggère que vous modifiez le code afin que vous fassiez ce que jamais vérifier pour vous assurer que la valeur entrée est un nom d'utilisateur à l'intérieur de la correspondance.
Je n'ai pas encore testé cela parce que j'ai du mal à le convertir en asp.net new {IsUserAction = new IsUserActionConstraint()} – user516883
Postez le bloc de code que vous utilisez pour enregistrer votre itinéraire et je vous donnerai vous un peu d'aide. new {} n'est qu'un objet ou un type anonyme, dans .NET 3.0 cette fonctionnalité a été introduite. Le côté gauche est juste un nom de variable et le côté droit crée une instance de la classe. Selon l'endroit où vous placez votre fichier de classe, vous devrez peut-être ajuster l'espace de noms de la classe, comme nouveau Path.To.Class.IsUserActionConstraint() –
En utilisant asp.net 4.0. et ce paramètre attend bool checkphysicalUrlAddress: routeCollection.MapPageRoute ("RouteForUser", "{username}", "~/Userprofile.aspx", nouveau IsUserActionConstraint()); – user516883
rewriterule www.webdomain.com/.+? www.webdomain.com/page.aspx?usename=$1
Utilisez le routage MVC. Ceci est un bon article sur la façon d'utiliser le routage avec mvc webforms:
http://msdn.microsoft.com/en-us/magazine/dd347546.aspx
et
Bons exemples. Je suis maintenant capable de faire www.example.com/u/username. comment je me débarrasserais de/u et aurais juste/username, il me dit que le reroute ne peut pas commencer par/ – user516883
Vous devrez enregistrer un itinéraire pour "{Username}" et je suggèrerais de créer un IRouteConstraint qui ferait respecter l'itinéraire ne correspond que lorsque la valeur entrée était un nom d'utilisateur. Voir http://stackoverflow.com/questions/4988138/how-to-make-irouteconstraint-filter-route ou http://stephenwalther.com/blog/archive/2008/08/07/asp-net-mvc-tip -30-create-custom-route-constraints.aspx –
Y at-il de toute façon vous pouvez me montrer un exemple sous forme asp.net. J'ai la classe IRouteConstraint mais je ne sais pas trop comment l'utiliser. Merci – user516883
Il y a quelques façons de le faire. Vous pouvez utiliser ASP.NET MVC et créer une route en utilisant un IRouteConstraint pour vous assurer que le nom d'utilisateur existe.
Vous pouvez également créer un IHttpModule qui capture les demandes Application_BeginRequest et handel pour www.webdomain.com/username et ReWriting ou TransferRequest vers www.webdomain.com/page.aspx?usename=myusername.
Vous pouvez également faire le code directement dans Global.asax comme vous le feriez avec le IHttpModule.
- 1. ASP.Net - Url Forwarding avec Réécriture
- 2. URL réécriture dans asp.net
- 3. Url réécriture asp.net 3.5
- 4. url réécriture de l'application asp.net
- 5. URL de réécriture dans asp.net C#
- 6. URL réécriture dans asp.net du sous-répertoire
- 7. ASP.NET/URL Réécriture dans un environnement de développement
- 8. Url réécriture dans ASP.NET: ressource introuvable
- 9. URL réécriture dans cakephp
- 10. Comment faire une réécriture d'URL dans Rails?
- 11. Url réécriture dans les formulaires Web asp.net (avec quelques complications)
- 12. Référence de l'objet null- URL réécriture asp.net
- 13. Url Réécriture de l'hôte dans ASP.NET sur IIS 6
- 14. faire de réécriture url basé sur php?
- 15. URL de réécriture .htaccess avec le paramètre
- 16. comme twitter url avec réécriture?
- 17. Comment appliquer une URL personnalisée sans utiliser l'URL de réécriture?
- 18. Url Réécriture avec 2 liaisons URL différentes
- 19. Url réécriture avec Python Paste
- 20. Comment utiliser un nom d'utilisateur CouchDB dans une réécriture d'URL?
- 21. htaccess Réécriture d'une URL avec une virgule
- 22. supprimer un niveau dans une URL de chemin Réécriture
- 23. URL Apache Réécriture
- 24. Faire une URL réécriture en utilisant la méthode GET PHP
- 25. Faire correspondre un nom de fichier spécifique dans une URL avec une expression régulière
- 26. URL réécriture dans Wordpress
- 27. URL réécriture faux URL
- 28. comment faire url réécrire apache sans aucune condition de réécriture?
- 29. Réécriture dynamique d'une URL
- 30. URL réécriture IIS6 une URL au lieu d'une autre URL
Je pense que le mot que vous cherchez est "rediriger". –