Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Elmah被困在默认路线?_Asp.net Mvc_Elmah_Elmah.mvc - Fatal编程技术网

Asp.net mvc Elmah被困在默认路线?

Asp.net mvc Elmah被困在默认路线?,asp.net-mvc,elmah,elmah.mvc,Asp.net Mvc,Elmah,Elmah.mvc,我将Elmah.MVC添加到我的MVC站点中,但当access/Elmah时,我的站点陷入重定向循环/Elmah?culture=en-我认为这是因为我的一个路由配置条目: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathIn

我将Elmah.MVC添加到我的MVC站点中,但当access/Elmah时,我的站点陷入重定向循环/Elmah?culture=en-我认为这是因为我的一个路由配置条目:

public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", "{culture}/{controller}/{action}/{id}", new { culture = CultureHelper.GetDefaultCulture(), controller = "Home", action = "SetCulture", id = UrlParameter.Optional } ); } } 公共类路由图 { 公共静态无效注册表项(路由收集路由) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( “默认”, “{culture}/{controller}/{action}/{id}”, 新建{culture=CultureHelper.GetDefaultCulture(),controller=“Home”,action=“SetCulture”,id=UrlParameter.Optional} ); } } 如何修改RouteConfig以正确显示/elmah?还是我看错地方了


谢谢:-)

这是由一个名为CultureAwareControllerActivator的类引起的,该类实现了IControllerActivator

我的知识有限,但这个类(我自己添加的)似乎在控制器被激活时连接到请求,并决定是否修改和重定向

public class CultureAwareControllerActivator : IControllerActivator { public IController Create(RequestContext requestContext, Type controllerType) { string cultureName = requestContext.RouteData.Values["culture"] as string; // Attempt to read the culture cookie from Request if (cultureName == null) cultureName = requestContext.HttpContext.Request.UserLanguages != null && requestContext.HttpContext.Request.UserLanguages.Length > 0 ? requestContext.HttpContext.Request.UserLanguages[0] : null; // obtain it from HTTP header AcceptLanguages // Validate culture name cultureName = CultureHelper.GetImplementedCulture(cultureName); // This is safe if (requestContext.RouteData.Values["culture"] as string != cultureName && (string) requestContext.RouteData.Values["controller"] != "Elmah") { // Force a valid culture in the URL requestContext.RouteData.Values["culture"] = cultureName.ToLowerInvariant(); // lower case too // Redirect user requestContext.HttpContext.Response.RedirectToRoute(requestContext.RouteData.Values); } // Modify current thread's cultures Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; return DependencyResolver.Current.GetService(controllerType) as IController; } } 公共类CultureWareControllerActivator:IControllerActivator { 公共IController创建(RequestContext RequestContext,类型controllerType) { 字符串cultureName=requestContext.RouteData.Values[“culture”]作为字符串; //尝试从请求读取区域性cookie if(cultureName==null) cultureName=requestContext.HttpContext.Request.UserLanguages!=null&&requestContext.HttpContext.Request.UserLanguages.Length>0 ?requestContext.HttpContext.Request.UserLanguages[0] :null;//从HTTP头获取它 //验证区域性名称 cultureName=CultureHelper.GetImplementedCulture(cultureName);//这是安全的 if(requestContext.RouteData.Values[“culture”]作为字符串!=cultureName&(string)requestContext.RouteData.Values[“controller”]!=“Elmah”) { //在URL中强制使用有效的区域性 requestContext.RouteData.Values[“culture”]=cultureName.ToLowerInvariant();//小写 //重定向用户 requestContext.HttpContext.Response.RedirectToRoute(requestContext.RoutedData.Values); } //修改当前线程的区域性 Thread.CurrentThread.CurrentCulture=新的CultureInfo(cultureName); Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture; 返回DependencyResolver.Current.GetService(controllerType)作为IController; } }