Я установил Twitter.Bootstrap.mvc4 в проект VS2010. Я также установил Glimpse.

Я обнаружил, что меню, использующие маршруты навигации, которые предлагает Twitter.Bootstrap.mvc4, "сломаны" Glimpse. В файле NavigationExensions.cs коллекция RouteCollection заключена в прокси Castle, в результате чего переменная navigationRoutes всегда возвращает 0.

        public static IEnumerable<NamedRoute> GetRoutesForCurrentRequest(RouteCollection routes,IEnumerable<INavigationRouteFilter> routeFilters)
    {
        var navigationRoutes = routes.OfType<NamedRoute>().Where(r=>r.IsChild==false).ToList();

Я могу видеть информацию в окне просмотра и даже получать информацию для отображения в окне Immediate, используя "((Castle.Proxies.RouteProxy_1) routes [5]) .__ target". Поэтому я решил перебрать маршруты и поискал именованный маршрут. Однако я не знаю, что делать, чтобы получить ссылки, необходимые для доступа к прокси. Код Castle похоронен в библиотеке Glimpse.Core.

Я удалил Glimpse, чтобы убедиться, что это является причиной проблемы (это так).

5
AC Thompson 8 Июл 2013 в 00:47

1 ответ

Лучший ответ

В настоящее время существует проблема, которая отражает ту же проблему, хотя и в другом контексте.

В настоящее время нет настоящего исправления, поскольку GetRoutesForCurrentRequest проверяет экземпляры NamedRoute, а Glimpse использует прокси-серверы, но вы всегда можете отключить часть Glimpse, чтобы проблема с навигацией была устранена на время.

Чтобы он снова заработал, вы

  1. должен отключить RouteInspector Glimpse
  2. (необязательно) удалите вкладку «Маршруты» с панели управления Glimpse, поскольку теперь она будет отображать только частичную информацию из-за отсутствия инспектора. Хотя эта опция не является обязательной, и на вкладке «Маршруты» может отображаться некоторая информация, которую вы, возможно, захотите увидеть.

Это можно сделать в разделе конфигурации Glimpse.

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
  <inspectors>
    <ignoredTypes>
      <add type="Glimpse.AspNet.Inspector.RoutesInspector, Glimpse.AspNet"/>
    </ignoredTypes>
  </inspectors>
  <tabs>
    <ignoredTypes>
      <add type="Glimpse.AspNet.Tab.Routes, Glimpse.AspNet"/>
    </ignoredTypes>
  </tabs>
</glimpse>
5
cgijbels 8 Июл 2013 в 16:50
Спасибо за этот вариант. Я пометил это как ответ, поскольку это позволяет использовать GetRoutesForCurrentRequest и по-прежнему использовать большую часть Glimpse. Я склоняюсь к поиску другого способа сделать систему меню, поскольку я хотел бы сохранить как можно большую часть функциональности Glimpse.
 – 
AC Thompson
8 Июл 2013 в 18:00
- Благодаря тонну! Интересно, есть ли в Glimpse зарегистрированный баг для этого? Согласитесь с @ ac-thompson; link предоставляет быстрые, интуитивно понятные расширения html для начальной загрузки, помогающие создавать меню. Проверить - ссылка
 – 
RadicalFish
6 Апр 2014 в 15:10