2013-10-14 172 views
0

我在ASP.NET应用MVC4我:Asp.Net MVC路由没有控制器和动作X的Web.config

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

路线:

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> 

它不工作:www.website.com/mycode 但它的工作:www.website.com/CampanhaResposta/Resposta/mycode

为什么?

+1

实际问题是什么? –

+0

为什么使用''节来处理ASP.NET MVC应用程序中的授权,而不是使用AuthorizeAttribute? –

+0

什么“不起作用”? – haim770

回答

1

你需要你的路由更改为:

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

它将返回:www.website.com/Resposta

0

当你得到www.website.com/mycode,路由认为 “mycode的” 是控制器的名字。即使您已经为“控制器”和“动作”路由参数提供了默认值,也不会使用它们,因为url: "{controller}/{action}/{conte}"预计“竞争”是最后一次。你将不得不改变网址模板。

例如,如果您将其更改为

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

,然后再得到www.website.com/mycode,“mycode的”将正确地被视为“小故事”路线变量的值。此外,控制器和动作的默认值将启动,您将获得您之后的结果。

相关问题