2009-06-04 5 views
2

Je reçois une erreur étrange dans mon site MVC. J'ai une action dans mon contrôleur qui répond à la route par défaut de {controller}/{action}/{id} - dans mon cas,/Project/Client/{id}.Action ASP.NET MVC donne 404 sur certains paramètres?

En fonction de l'ID que je lui passe, j'obtiens une erreur. Avec Elmah éteint, c'est une erreur d'ASP.NET 404. Activer Elmah me donne ce qui suit:

System.Web.HttpException 
    at System.Web.CachedPathData.GetConfigPathData(String configPath) 
    at System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) 
    at System.Web.HttpContext.GetFilePathData() 
    at System.Web.HttpContext.GetConfigurationPathData() 
    at System.Web.Configuration.RuntimeConfig.GetConfig(HttpContext context) 
    at System.Web.HttpContext.get_ImpersonationToken() 
    at System.Web.ClientImpersonationContext.Start(HttpContext context, Boolean throwOnError) 
    at System.Web.HttpApplication.ThreadContext.SetImpersonationContext() 
    at System.Web.HttpApplication.ThreadContext.Enter(Boolean setImpersonationContext) 
    at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext) 
    at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error) 

Cela se produit uniquement avec certains paramètres d'ID. par exemple

/Projects/Client/ABC -- works 
/Projects/Client/DEF -- works 
/Projects/Client/GHI -- 404 
/Projects/Client/JKL -- works 

et ainsi de suite ...

Des indices?

+0

Avez-vous d'autres itinéraires mis en place dans votre application? –

+0

J'en ai un qui ajoute aussi un paramètre de page, donc {controller}/{action}/{id}/{page} – Chris

+0

Avez-vous un test unitaire pour l'exemple "GHI"? Cela aiderait à s'assurer que vous avez vraiment un problème de routage et pas un problème dans la logique du contrôleur. –

Répondre

0

Une chose que vous devriez regarder est vos fichiers web.config dans votre site. Le sommet de votre trace de pile;

at System.Web.CachedPathData.GetConfigPathData(String configPath) 

Apparaît être un appel pour déterminer l'emplacement du fichier web.config. Il se peut que le système de fichiers virtuel étant défini par vos itinéraires (/Project/client/id) est en conflit avec une web.config qui peut exister, par exemple, ~/Project/web.config

Il est un peu un coup de poignard sauvage dérivée de la trace de la pile, mais shouldn Ne prenez pas trop de temps pour voir si cela pourrait être un problème.

0

Si quelqu'un d'autre apparaît sur cette page et ne trouve pas la solution recherchée, certaines chaînes de caractères ne sont pas autorisées dans les URL. Lisez à ce sujet ici:

Weird 404 error in ASP.NET MVC when including "con"

La solution est une autre des drapeaux « WorkProperly » de Microsoft (dont la valeur par défaut est « false »)

Questions connexes