2017-07-24 1 views
0

J'ai un certain nombre de zones dans mon application mvc, et certaines d'entre elles nécessitent une valeur de route, comme préfixe à l'ensemble de la route. comme ça ...asp.net core Routage de zone MVC, paramètres routevalue pour certaines zones

mydomain.com/{routevalue}/{area}/{controller}/{action}/{id?}

cependant, il y a deux zones qui n'utilisent pas routevalue et donc je voudrais qu'ils répondent à mydomain.com/{area}/{controller}/{action}/{id?}

J'essaye de construire quelques modèles d'itinéraire qui couvrent cette condition, mais pas avoir beaucoup de chance. J'avais initialement ajouté une nouvelle route pour chaque zone, de sorte que celles qui n'avaient pas besoin de routevalue ne l'auraient pas dans le template. cela fonctionnait bien lors de l'exécution locale est IIS express, mais dès que je déployé à IIS sur un serveur, aucun de ces itinéraires de zone répondait, et à la place je recevais un 404 ..

voici ma configuration actuelle Je me demande si je peux réduire cela du tout, et l'obtenir effectivement pour répondre sur le serveur? Je n'ai pas actuellement de Area ou Route attributs sur les contrôleurs ou les actions (comme je ne les avais pas besoin avant)

modifier: i alors essayé ceci:

routes.MapRoute("areaNoProduct", "{area:exists}/{controller}/{action}/{id?}", 
defaults: new { area = "YourAccount", controller = "YourAccount", action = "Index" }); 

routes.MapRoute(
    name: "areaRoute", 
    template: "{product}/{area:exists}/{controller}/{action=index}/{id?}"); 

routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); 

mais ne pas seulement pop le produit en tant que chaîne de requête, mais il ne marche pas générer les urls correctes pour les actions, que je suppose est le routage étant incorrect

Répondre