Вход в систему API

Вы должны быть в состоянии использовать синтаксис выражения @():

<a class="@(User.Identity.IsAuthenticated ? "auth" : "anon")">My link here</a>

У меня не установлена ​​Razor, поэтому я могу ошибаться.

8
задан Matt Howells 9 July 2009 в 16:17
поделиться

5 ответов

Посмотрите, как SpringFramework решает эту проблему. Он использует Common.Logging, который затем может быть сопоставлен с log4net или любой другой настраиваемой структурой ведения журнала через файл конфигурации. Вы можете найти более подробную информацию на веб-сайте Common.Logging , но в основном вы делаете следующее:

  • ссылка Common.Logging в вашем классе используется, он точно так же, как log4net
  • , настроит потребитель вашего фреймворка Common.Logging для использования log4net следующим образом:

  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>

  <log4net>
.... normal log4net configuration goes here...
  </log4net>

Если клиент также напрямую использует SpringFramework или Common.Logging, конфликт все еще возможен, но его вероятность значительно снижается по следующим причинам:

  • Команда Common.Logging много думает, чтобы обеспечить обратную совместимость будущих версий с прошлыми версиями. Например, 2.0 полностью двоично совместим с 1.2.
  • Common.Logging изменяется реже, чем log4net, по крайней мере теоретически
4
ответ дан 5 December 2019 в 19:02
поделиться

Используйте Корпоративную библиотеку . Он достаточно гибкий и использует как встроенные, так и собственные логгеры. Он также был достаточно совместим с версией. Он достаточно настраиваемый, чтобы в случае конфликта с конкретным компонентом его можно было легко заменить, просто изменив конфигурацию.

2
ответ дан 5 December 2019 в 19:02
поделиться

Используйте System.Diagnostics.Trace . Тогда никаких шансов на конфликт версий!

2
ответ дан 5 December 2019 в 19:02
поделиться

Вот здесь ваш друг - инъекция зависимостей - вам, вероятно, не нужно использовать весь log4net, а скорее некоторые его небольшие части. Поэтому напишите в своем приложении класс ILogger, который раскрывает ваши функции, а затем напишите реализацию для любого регистратора (ов), который вы хотите использовать. Например, средство ведения журнала Debug.Trace () отлично подходит для разработки или отладки, а для производства может потребоваться драйвер log4net. Затем используйте внедрение зависимостей, например StructureMap, чтобы вставить экземпляры вашего регистратора в производственный код.

1
ответ дан 5 December 2019 в 19:02
поделиться

используйте внедрение зависимостей (Unity, Castle Windsor и т. Д.), Чтобы указать, какую dll log4net использовать таким образом, если клиент использует более старую версию, вы можете просто подключить туда версию log4net, если у них ее нет, предоставьте свою.

0
ответ дан 5 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: