Реализация патерна PRG в asp.net mvc

PRG —  post redirect get. Все POST параметры записываются в сессию, и делается редирект на GET. После чего параметры запроса восстанавливают из сессии. Это удобно когда имеются два метода один метод GET который представляет форму, а второй метод POST который сохраняет эти данные . И в случае ошибки делается редирект на форму с уже заполненными неправильными данными.

Читать далее Реализация патерна PRG в asp.net mvc

Ninject и AOP

Ninject имеет много расширений. Одно из полезных расширений это Ninject.Extensions.Interception.DynamicProxy. Данное расширение позволяет перехватывать вызовы методов, что позволяет вынести сквозную функциональность из наших модулей. Установим данный пакет и вынесем логику работы с транзакциями в Intercepter (перехватчик).

Читать далее Ninject и AOP

Создаем базовый репозиторий

Для того чтобы контекст бд сохранялся из репозитория в репозиторий, можно сохранять данный контекст в HttpContext.Current.Items и получать его из этого контекста(HttpContext) когда необходимо. Создадим абстрактный базовый репозиторий, который будет содержать данную логику.

Читать далее Создаем базовый репозиторий

Создаем класс для хранения данных для рабочего потока (Thred Local Storage)

Иногда есть данные которые хочется сохранить для текущего рабочего потока и многие сохраняют их в HttpContext.Current.Items.  Но такой способ привязывает все приложение к asp.net mvc. Создадим класс TLS(Thread Local Storage), чтобы по возможности можно было использовать ThreadStatic или CallContext, в зависимости от режима TlsMode.

Читать далее Создаем класс для хранения данных для рабочего потока (Thred Local Storage)

Получаем данные из appSettings при помощи Ninject

Создадим пользовательский атрибут ValueAttribute, который будет производным от атрибута InjectAttribute. Данный атрибут достает значение из appSettings, а Inject в свою очередь запишет это значение в указанное свойство.

Читать далее Получаем данные из appSettings при помощи Ninject

Обертка для написания пользовательских ошибок elmah

Elmah позволяет писать свои сообщения в лог таким образом:

Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(new Elmah.Error(new Exception(str)));

Получается приходиться писать очень длинную строчку. Поэтому создадим класс — обертку, которая будет делать это за нас.

Читать далее Обертка для написания пользовательских ошибок elmah

Работа с логированием в asp.net

Посмотрим логи которые пишет iis сервер по умолчанию. Установим elmah и nlog логирования. Первый удобен тем что имеет веб интерфейс. Второй позволяет писать логи в текстовый файл, что удобно когда нужно исследовать участок кода более подробно.

Читать далее Работа с логированием в asp.net