2015-01-23 5 views
0

Я добавил Elmah.MVC к моему MVC-сайт, но когда доступ/ELMAH, мой сайт застревает в цикле перенаправлять/ELMAH культура = еп - что я считаю, это из-за моего один маршрут записи конфигурации:?Elmah застревает по умолчанию?

 
    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 } 
      ); 
     } 
    } 

Как изменить RouteConfig для правильного отображения/elmah? Или я смотрю на неправильное место?

Спасибо :-)

ответ

2

Это было вызвано класс под названием 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; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^