Czech.NET Forum – diskusní fórum v ASP.NET

30. října 2003

Když se objevil nápad použít na Intervalu diskusní fórum z Microsoft ASP.net, zajásal jsem v předtuše snadné a pohodlné instalace. Bohužel záhy mé nadšení vystřídalo zklamání. Jakými peripetiemi fórum prošlo a co všechno jsem musel udělat, aby diskuze „běhaly“ v českém prostředí, to se dozvíte z tohoto článku.

Zcela naivně jsem z www.asp.net stáhl instalační program a spustil instalaci, která se měla o vše postarat – všechny systémové požadavky jsem přeci splňoval s rezervou:

  • Windows 2000, XP nebo Windows 2003
  • MSDE 2000 nebo MS SQL 7.0 a vyšší
  • nainstalovaný .NET Framework 1.0. nebo vyšší

Z představy, že fórum nainstaluji a bude hotovo, jsem byl vyléčen ihned po spuštění prohlížeče. To, co jsem viděl, mi doslova vyrazilo dech:

ASP.NET Forums - úvodní chybové hlášení

Podle dokumentace k MS SQL nastává tato chyba v případě, kdy se porovnávají dva řetězce, které mají různé nastavení kolace. Podotýkám, že mám nastavenu kolaci na Czech_CI_AS, nepoužívám defaultní SQL_Latin1_General_CP1_CI_AS. Tu však ASP.NET Forums naprosto nekompromisně vyžadují a při použití jiné kolace jednoduše havarují. (Pokud se vám tedy podařilo fórum nainstalovat a bez problémů spustit, můžete si být jisti, že používáte MS SQL v základním nastavení včetně kolace SQL_Latin1_General_CP1_CI_AS, která ovšem není pro naše prostředí vhodná).

Aplikace závislá na nastavení serveru se pravděpodobně nejen mně vůbec nelíbí, proto jsem se rozhodl najít řešení, které by tuto závislost odstranilo. Po zdlouhavém hledání jsem zjistil, že jsou v uložených procedurách databázové aplikace používány dočasné tabulky, které nemají specifikovánu kolaci u použitých objektů. A to je právě kámen úrazu. V případě, že není specifikována kolace, SQL server totiž použije kolaci podle databáze, v níž je objekt uložen. Pokud však používáte dočasné objekty, nedojde k použití kolace databáze, s níž pracujete (AspNetForums), ale kolace databáze tempdb, která bývá většinou nastavena stejně jako SQL server.

Abych nechodil kolem horké kaše – našel jsem chyby v nastavení kolace pro sloupce dočasných tabulek, které jsou používány v uložených procedurách. Jedná se o Statistics_ResetTopPosters a forums_FindUsersByName. Prohlédnout si je můžete přímo v SQL skriptu AspNetForum.sql, který najdete v adresáři, do nějž jste fórum nainstalovali (standardně c:\AspNetForums). Protože si myslím, že kolace SQL_Latin1_General_CP1_CI_AS není zrovna nejvhodnější pro české prostředí, upravil jsem SQL skript pro vytvoření databáze, tabulek a uložených procedur pro kolaci Czech_CI_AS, stačila chvilka s Notepadem.

Dalším problémem je, že každému nově vytvořenému uživateli je nastaveno časové pásmo GMT-5. Protože jsme však ve střední Evropě, dovolil jsem si tuto hodnotu v tabulce user upravit na GMT+1, která odpovídá našemu časovému pásmu.

V této fázi jsme začali uvažovat o speciální mutaci ASP.NET Forums, která by zahrnovala všechny potřebné opravy a úpravy pro naše podmínky, a další problémy s fórem na Intervalu nás nakonec přesvědčily o nutnosti tohoto kroku. Výsledkem je tedy instalační balík Czech.NET Forum. Instalační program není ještě zcela počeštěn, stejně tak jako nemá českou lokalizaci fórum, což je ovšem pouze otázkou času. (Na překladu již pracuje jedna ze čtenářek Intervalu.)

Zpět k instalaci. Pokud vše proběhne bez chyb, měli byste ve svém prohlížeči spatřit obrazovku podobnou této:

ASP.NET Forums - úvodní obrazovka

Po výše popsaných úpravách máte sice funkční fórum, bylo by však vhodné jej alespoň trochu nakonfigurovat. Řada položek je uložena v souboru web.config, ale jak se následně přesvědčíte, přinejmenším stejné množství parametrů je zakódováno napevno přímo v enginu. Cílem dalšího buildu Czech.Net Forum proto bude mimo jiné i přesun veškerých konfigurovatelných položek právě do souboru web.config, prozatím ovšem budete muset postupovat podle následujícího návodu.

Jako první byste měli změnit heslo správce konference (standardně má jméno Admin/admin), i když daleko lepší by asi bylo vytvořit zcela jiného uživatele se stejnými právy.

Zcela jistě budete chtít, aby se vaše fórum jinak jmenovalo a běhalo na úplně jiné adrese. Toho dosáhnete pomocí parametrů siteName a urlWebSite. A pokud předpokládáte, že se většina vašich uživatelů fyzicky vyskytuje ve střední Evropě, můžete rovnou změnit nastavení dbTimeZoneOffset na hodnotou +1, místo předdefinované -5, která odpovídá východnímu pobřeží USA (v instalaci Czech.NET Forum již tato úprava zanesena je).

<add key=“siteName“ value=“ASPNET.CZ Forums“ />
<add key=“urlWebSite“ value=“http://www.forum.cz“ />
<add key=“dbTimeZoneOffset“ value=“+1″ />

V souboru web.config můžete sice nastavovat formát data a času, ale bohužel vám to na řadě míst nebude moc platné, jelikož autoři ASP.NET většinou formát natvrdo zadali přímo v enginu fóra. Pokud tedy budete chtít plně modifikovat formáty zobrazení pomocí níže uvedených parametrů, nezbývá vám nic jiného, než si engine přepsat nebo si počkat na další build z dílny redakce Intervalu. (Mimochodem, do enginu je zcela nesmyslně zakódována také řada textů!!!)

<add key=“defaultDateFormat“ value=“dd MM yyyy“/>
<add key=“defaultTimeFormat“ value=“hh:mm tt“/>

Celé ASP.NET Forums zkrátka obsahuje řadu chyb a nedodělků, které se vám budeme snažit nejen ukázat, ale i nabídnout jejich řešení. Samozřejmě nejsme vševědoucí a není v našich silách odhalit všechny problémy či dokonce je umět všechny hned vyřešit. Pokud někdo z vás objeví chybu a bude ji umět opravit, ušetří nám množství práce, zvýší kvalitu našeho Interfora a zároveň prospěje ostatním čtenářům, kteří se rozhodnou využít naše Czech.NET Forum v rámci svých www-projektů.

Základní změny provedené v prvním buildu Czech.Net Forum oproti ASP.NET Forums, aby jej bylo vůbec možno nainstalovat:

  • adresář s aplikací přejmenován na CzechNetForum
  • použitá databáze přejmenována na CzechNetForum
  • v databázi změněna kolace na Czech_CI_AS
  • časové pásmo nastaveno na střední Evropu (GMT+1)

Nakonec ještě jedna maličkost. Určitě bude řadu z vás zajímat, zda lze zprovoznit Czech.NET Forum na hostingu, když instalační program neumožňuje nainstalovat aplikaci jinam než na lokální stroj. Fórum na hostingu samozřejmě použít lze, budete ale muset provést celou konfiguraci ručně a mít přitom na paměti, že se databáze bude muset jmenovat úplně jinak (zcela jistě ji budete mít již od provozovatele vytvořenu). Pokud bude o detailní postup zprovoznění fóra na hostingu včetně upravených SQL skriptů zájem, budu o článku na toto téma vážně uvažovat.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Předchozí článek Nové přechody - přehled 4.
Další článek lord.sk
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *