2013-10-14 2 views
0

Mon application dans ASP.NET MVC4 J'ai:Asp.Net MVC routage sans contrôleur et l'action X Web.config

<authentication mode="Forms"> 
     <forms loginUrl="~/Logon/Autentica" timeout="120"></forms> 
    </authentication> 

routes:

routes.MapRoute(
       name: "Abcdef", 
       url: "{controller}/{action}/{conte}", 
       defaults: new { controller = "CampanhaResposta", action = "Resposta" } 
      ); 

web.config:

<location path="CampanhaResposta/Resposta"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Cela ne fonctionne pas: www.website.com/mycode mais ça marche: www.website.com/CampanhaResposta/Resposta/mycode

Pourquoi?

+1

Quelle est la vraie question? –

+0

Pourquoi utilisez-vous la section '' pour gérer l'autorisation dans une application ASP.NET MVC au lieu d'utiliser AuthorizeAttribute? –

+0

Qu'est-ce exactement "ne fonctionne pas"? – haim770

Répondre

1

Vous devez changer votre routage:

routes.MapRoute(
       name: "Abcdef", 
       url: "{action}/{conte}", 
       defaults: new { controller = "CampanhaResposta", action = "Resposta", conte = UrlParameter.Optional} 
      ); 

Il retournera: www.website.com/Resposta

0

Lorsque vous obtenez www.website.com/mycode, Routing pense que "mycode" est un nom de contrôleur. Même si vous avez fourni des valeurs par défaut pour les paramètres de route "controller" et "action", ils ne sont pas utilisés car url: "{controller}/{action}/{conte}" s'attend à "conte" le dernier. Vous devrez changer le modèle d'URL.

Par exemple, si vous changez à

url: "{conte}/{controller}/{action}"

puis obtenez www.website.com/mycode à nouveau, « mycode » sera correctement traitée comme une valeur de la variable d'itinéraire « conte ». De plus, les valeurs par défaut du contrôleur et de l'action entreront et vous obtiendrez le résultat que vous recherchez.