msBuild

Понедельник, 3 Март, 2008

Интересно иногда поковыряться в батниках от Microsoft. Последний раз потрошил .cmd из EnterpriseLibrary (\EntLib3Src\App Blocks\BuildLibrary.cmd). Казалось бы, простая операция msbuild и такой большой батник. Ан нет, действительно все к месту и очень гибко.

Чтобы не забыть — черновик батника для сборки msbuild’ом и aspnet_compiler’ом. msbuild — для сборки release проекта и как сделать “publish web site” с помощью aspnet_compiler.

Далее…

LDAP в ScrewTurn Wiki - 2

Суббота, 16 Февраль, 2008
Продолжение (предыдущая серия)

Разобравшись с классом извлекающим информацию из Active Directory (AD), я вплотную занялся внедрением разработки в ScrewTurn Wiki (STW).

Вместо того, чтобы сразу лезть в код, я иду в каталог исходников и некоторое время изучаю название файлов. Меня заинтересовали Login.aspx.cs и конечно же Global.asax. Еще немного подумав, я почитал форум STW и решил для себя, что плагин писать не буду, а сделаю банальный хак, т.е. просто внедрюсь в код wiki.

Далее…

LDAP в ScrewTurn Wiki

Четверг, 14 Февраль, 2008

На днях обновили версию ScrewTurn Wiki (точнее, перешли на версию 2.0.25 от 11 февраля 2008 г.), заодно я поправил LDAP часть для пользователей в домене.

Последнее время ScrewTurn Wiki (STW) быстро развивается: закрываются баги, добавляются новые фишки и возможности. Думаю, в скором времени, она достигнет уровня MediaWiki, а по удобству настроек и дружелюбности, STW ее уже давно обогнала. Если нужна Wiki на ASP.NET, то это wiki от ScrewTurn.

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

На основе LDAP, была изобретена следующая система:
- STW доступна только для пользователей “в домене” (в целях безопасности).
- Пользователь открывает STW и автоматически логинится с информацией из Active Directory (AD).
- Чтобы пользователь мог изменять свой профиль, при первой загрузке wiki, создается новый пользователь STW. Опять-таки, на основе данных из AD.

Далее…

Феникс: вечный инстанс веб-приложения

Вторник, 19 Июнь, 2007

Что делать, если веб-приложение должно совершать периодические действия? Точнее, как сделать?

Если сервер находится в собственности разработчика (или фирмы разработчика), то проблем нет. В нашем распоряжении есть cron для Apache(*nix) и at для IIS(Windows).

//Process proc = new Process();
//proc.StartInfo.FileName = “at.exe”;
//proc.Start();

А если сервер «чужой»? Если экземпляр приложения должен уложится в рамки серверного ttl и упокоиться до следующего запроса? Попробуем не дать угаснуть жизни.

“Add new item…”
“Globall Application Class”
Оставим как есть: “Global.asax”

В “Global.asax” внесем следующие изменения:

void Session_End(object sender, EventArgs e)
{
   Application.Lock();
   
int sessionCount = 1;
   
if (Application.Get(“SessionsCount”) != null)
   {
       sessionCount = (
int)Application.Get(“SessionsCount”);

   }
   Application.Set(
“SessionsCount”, –sessionCount);
   Application.UnLock();
   
if (sessionCount == 0)
   {
       System.Net.
WebRequest myRequest =

       System.Net.
WebRequest.Create(“http://mysite.com/Default.aspx”);
           System.Net.
WebResponse myResponse = myRequest.GetResponse();
       myResponse.Close();
   }
}

Что происходит? При закрытии последней сессии (их число определяется при закрытии очередной сессии) наше приложение обращается к самому себе, появляется новая сессия и экземпляр продолжает жить. Феникс.