e0ne's comments

A Web Developer's Blog!

ASP.NET, сэссия и рестарт приложения

clock June 9, 2009 13:28 by author e0ne

Всё началось с того, что в спецификации к проекту написали примерно такое: "Время продолжительности сэссии пользователя на сайте должно составлять 120 минут". После чего, в web.config была добавлена следующая строка: 

<sessionState mode="InProc" cookieless="false" timeout="120" />

А на страницу был добавлен такой мета-тег:

<meta http-equiv="Refresh" content="7200; URL=/EzRc/Pages/LogOn/SessionExpired.aspx" />

Следует упомянуть конфигурацию тестовых серверов: Windows Vista/2008, IIS7, .NET 3.5. Ничто не предвещало беды. Но, как и полагается, в один "прекрасный" день всеми людимые QA написали баг следующего содержания: "Session expiration occurs prior to 30 min (and as little as 10 min)." При этом повторить его было достаточно просто:

  • залогиниться на сайт
  • оставить браузер в покое на 30 минут

После этих нетрудный манипуляций при попытке перейти по любой ссылке мы оказывались на странице, в которой радостно говорилось об окончании сэссии и предлагалось перейти на страницу логина. Естественно, этот баг повторялся не всегда.

Ещё раз убедившись в правильности настроек сэссии в web.config я реши воспроизвести этот баг на локальном (dev) компьютере. Как ни странно, но баг воспроизводился в 100% случаев. "Странно" - подумал я и налил ещё чашку кофе.

Запустив Fiddler2 и залогинившись на сайт я снова оставил его в покое на 30 минут. Через это время, убедившись, что cookie приходят валидные, я наал смотреть логи. Напервый взгляд всё было хорошо, но присмотревшись внимательно, увидел что отрабатывает событие ApplicationStart. Теперь понятно почему заканчивается сэссия. Осталось разобраться почему перезапускается приложение.

Из логов IIS:

Event code: 1002
Event message: Application is shutting down. Reason: Hosting environment is shutting down.
Event time: 6/8/2009 1:50:21 PM
Event time (UTC): 6/8/2009 10:50:21 AM
Event ID: 80d0faffb34547fea6299cfff8cf1c6f
Event sequence: 4
Event occurrence: 1
Event detail code: 50002
 
Application information:
    Application domain: /LM/W3SVC/1/ROOT/Web-1-128889305624881519
    Trust level: Full
    Application Virtual Path: /EzRc
    Application Path: C:\Src\Sites\Web\
    Machine name: localdev
 
Process information:
    Process ID: 6364
    Process name: w3wp.exe
    Account name: NT AUTHORITY\NETWORK SERVICE

 

 

После прочтения статьи из MSDN ASP.NET Application Life Cycle Overview ответ на интересующий вопрос не был получен, из чего был сделан вывод, что проблема находится уровне выше, а именно в IIS. Начал детально изучать настройки, которые могут повлиять на работу приложения и остановился на Application Pools. После чтения документации и нескольких неверных попыток был найден источник проблемы. Им оказался параметр Idle Time-out.

 



Оказалось, что при настройках по умолчанию, процесс, отвечающий за работу asp.net, тушится при условии, что к нему не обращаются в течении 20 минут. Это объясняло, почему проблему можно было не всегда воспроизвести на тестовом сервере.

Это же можно настроить и через файл machine.config. Подробнее описано здесь.

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Встречаем новый язык программирования от Microsoft - Axum

clock May 24, 2009 16:33 by author e0ne

Не успели мы ещё познакомитя с F# и новыми возможнастями .NET 4.0, как Microsoft представила новый язык программирования Axum (на самом деле Axum был представлен ещё до выпуска первой бета-версии .NET 4.0). Раньше он имел коддовое название Maestro.

Что же представляет собой Axum? Это язык для паралельной разработки (parallel model language), который позволяетлегко создавать легкомасштабируемые, распределённые и многопоточные приложения. Лично мне синтаксис этого языка напомнил Erlang, которые имеет изменённый синтаксис и является полностью .net-совместимым языком программирования. Текущяя версия - CTP. В данный момент не известно о дальнейшей судьбе и планах о релизе.

Чтобы посмотреть на этот язык вживую необходимо скачать небольшой 4.2МБ) плагин для Visual Studio 2008, на момент написание этого поста плагина для Visual Studio 2010 ещё нет. 



Так же с сайта Axum можно скачать спецификицию языка и руководство разработчкика на 42 и 36 страниц соответственно. Некоторую информацию можно узнать из блога команды разработчиков. Информации пока не много, но и её достаточно для знакомства с языкам и написанием приложений.

И на завершении, по традиции привожу пример "Hello World!".

 

  1. using System;
  2. using System.Concurrency;
  3. using Microsoft.Axum;
  4.  
  5. namespace ConsoleApplication1
  6. {
  7.     public domain Program
  8.     {
  9.         private writer agent MainAgent : channel Microsoft.Axum.Application
  10.         {
  11.             public MainAgent()
  12.             {
  13.                 String [] args = receive(PrimaryChannel::CommandLine);
  14.  
  15.                 Console.WriteLine(String.Format("Hello, {0}!", args[0]));
  16.  
  17.                 PrimaryChannel::Done <-- Signal.Value;
  18.             }
  19.         }
  20.     }
  21. }
  22.  

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Visual Studio 2010 and .NET Framework 4 Beta 1 доступны для скачивания

clock May 21, 2009 00:43 by author e0ne
Свершилось! Visual Studio 2010 and .NET Framework 4 Beta 1 качаем здесь, а отсюда качаем Visual Studio 2010 and .NET Framework 4 Training Kit - May Preview.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Pirates: to be or not to be.

clock April 23, 2009 18:11 by author e0ne
Навеяно судовым процессом над The Pirate Bay.

Сейчас всё чаще от правообладателей звучат угрозы в сторону торрент трекеров в частности и пиратов в общем. Их позиция понятна: они теряют прибыль. Пользователям, с одной стороны - хорошо, надо тратить меньше денег, с другой - они получают менее качественный продукт, но на это многим наплевать многих это не беспокоит. А вот моё субъективное мнение.

Начну с продуктов компании Microsoft, а именно - Microsoft Office. Из всего офисного пакета я активно пользуюсь Word, Excel, Outlook, иногда OneNote и PowerPoint. Но! Покажите мне редакцию MS Officе, где есть только эти продукты. Такой нет, а переплачивать за ненужные мне продукты - не хочется. Что мешает Microsoft дать возможность пользователям выбирать то, что им нужно, а не то, что им навязывают? Вот и получается, то есть желание, но нет возможности купить нужное ПО.

Дальше идут игры. Честно говоря, не понимаю людей, которые пользуются пиратскими версиями. Единственное преимущество - они стоят намного дешевле. Но стоят ли сэкономленные на этом деньги потраченному на запуск таких игр времени и нервам? Я думаю что нет. Нужно установить несколько приложений, запускать их в определённом порядки и только потом, если всё будет хорошо, можно насладится игрой. Опять же, если она не будет вылетать каждые 15-30 минут из-за очередного кряка. Игры - удовольствие, а за него, как известно, нужно платить. Только, почему-то,это мало кто понимает.

 Музыка и фильмы. С этой категорией продуктов всё на много хуже. Качество даже лицензионных дисков часто оставляет желать лучшего, полиграфия тоже не радует глаз. Я уже не говорю о том, что некоторые диски/фильмы просто невозможно купить. К пример, диск выпущен в 1998-м году, и его не переиздают, а послушать любимого исполнителя хочется. Ведь можно же, к примеру, переиздавать диски раз в пять лет малым тиражом. Почему этого никто не делает? Издатели боятся, что никто не купит, а в тоже время они возмущаются по поводу торрент трекеров, где практически всегда можно найти нужный диск. Не понимаю этого.

Что мы получаем в итоге? Потребители просто не могут купить нужное им всё из-за тех же правообладатаелей. А ещё... Ещё сборники mp3 музыки с красивой голографической наклейкой - лицензия! Да не нужна мне такая лицензия! Хочу иметь возможность купить то, что хочу, а не то, что предлагают! Сделайте сначала так, что бы была возможность пользоваться легальными продуктами, а потом уже и боритесь с пиратами!..

Currently rated 5.0 by 3 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Visual Studio 2008: проблемы с генерацией .designer.cs для Web Application

clock April 16, 2009 15:03 by author e0ne

Вчера столкнулся с интересным моментом при генерации *.designer.cs-файлов. Сначала подумал что это баг, но после недолгих размышлений пришел к выводу, что это не баг, а фича ("багофича" (с)). 

Всё началось с того, что на одной из страниц сайта нужно было создать некоторую функциональность, которая уже была доступна дадругой странице. Сразу же было решено поместить эу функциональность в UserControl.После достаточно стандартных действий, copy&pase нужной разметки из страницы в только что созданный контрол, уже собирался писать в нём логину, но... Но студия ругалась на любое упоминание о вебконтроле, расположенном в mycontrol.ascx. "Странно" - подумал я и посмотрел содеримое файла mycontrol.ascx.designer.cs. В нём оказалось пусто. Тут же вспомнились похожие баги Visual Studio 2005 без установки на неё Service Pack 1 и было принято решение (как озакалось потом - ошибочное) руками дописать нужный код. Дописал. Сайт скомпилировался и даже попытался запуститься, но run-time ошибка не дала ему нормально функционировать.

Ошибка достаточно ясно указывала на источник проблемы: при копипасте я забыл добавить в контол директиву <%@ Register TagPrefix="pref" TagName="Popup" src="~/UserControl/Popup.ascx" %>

После добавление этой директивы в mycontrol.ascx, mycontrol.ascx.designer.cs был успешно сгенерирован автоматически и всё заработало, а я ещё раз убедился, что от copy&pase не стоит дать ничего хорошего.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Offtopic: Архивы, архиваторы, Windows

clock April 13, 2009 16:44 by author e0ne

На работе возникла необходимость отправить архив с ..., с чем-то очень важным. По привычке, быстро сделал rar-архив, прикрепил его к письму и уже собирался нажать кнопку Send, но вовремя остановился. Вспомнил что в одном из писем мне присылали файлы, запакованы в zip-архив. Быстро переархивировал нужные файлы отправил письмо и задумался о Windows, Microsoft и архивах.

Вчера скачивал Internet Explorer Application Compatibility VPC Image. И там некоторые образы запакованы в rar-архив. Замечу, что это не первый случай, когда на сайте Microsoft лежат rar-архивы. Обратил я на это внимание потому, что сама ОС Windows "из коробки" может работать только с zip-архивами. И как это безобразие понимать? Microsoft рекламирует WinRar? Субъективно, было бы логичнее сжимать всё в zip, чтобы разработчики не искали нужное ПО, чтобы разархивировать нужные архивы. Или предполагается, что после покупки и установки OS Windows её пользователю необходимо ещё скачать/купить/установить n-е количество софта? Странно всё это...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Search

Calendar

<<  July 2009  >>
SuMoTuWeThFrSa
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Archive

Tags

 

 

Участник планеты Developers.org.ua

LinkedIn

Valid XHTML 1.0 Transitional

Categories


Blogroll

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2009

Sign in