2016-06-03 5 views
0

Ich arbeite an einem MVC-Intranet-Site AD-Authentifizierung verwenden, und ich erhalte eine Fehlermeldung, wenn ein Benutzer eine URL dieses Formats versucht ..ASP.NET MVC Routing mit einem Plus-Symbol

.../myController/view/64+ 

Andere Fehler wie

.../myController/view/aString 

.../myController/view/ 

sind alle gut behandelt, aber die '64 + Szenario das Autorisieren Attribut trifft‘, und die User.Identity ist null.

Alle Hinweise sehr geschätzt.

Controller-Code

[Authorize(roles="dom\\group")] 
public class MyController { 

    [HttpGet] 
    public ActionResult View(int id) 
    { 
     // do stuff.. 

     return View(viewModel); 
    } 


    protected override void OnException(ExceptionContext filterContext) 
    { 
     // handle and log error 
    } 
} 

die Site Routing Standard

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

Antwort

1

User.Identity null ist, wenn der Benutzer nicht angemeldet ist. Wenn Sie nicht Ihre Aktion mit einer Autorisieren dekorieren Attribut kann dies passieren.

Routing-Problem würde verhindern, die Aktion überhaupt zu treffen. Also würde ich das ausschließen.

+0

Das Attribut [Autorisieren] befindet sich in der Controller-Deklaration selbst. Autorisierung funktioniert einwandfrei für alle gültigen URLs und andere Ausnahmefälle - aktualisiert Q um dies anzuzeigen – SkeetJon

+0

Es trifft die Aktion überhaupt nicht, weshalb ich dachte, dass es ein Routing-Problem war – SkeetJon

+0

Okay. "64+" wird als String interpretiert. Ihre Aktion erfordert einen Int. Daher wird keine Route gefunden. – bdongus