Jak zprovoznit ASP.NET aplikaci na freehostingu

Tomáš Herceg       31. 5. 2008       SQL, ASP.NET/IIS, Databáze       8567 zobrazení

Protože zájem o technologii ASP.NET stále vzrůstá (což je dle mého názoru jen a jen dobře), máme zde pár freehostingů. Není jich sice tolik jako pro konkurenční péhápko, ale nabídka je i tak docela slušná. Navíc dnes webhosting stojí pár kaček, i domény jsou velice levné, takže mnoho začátečníků si může dovolit i vlastní doménu a hosting.

S nasazením ASP.NET aplikace na server to úplně nejjednodušší, zvlášť s tím, jak přenést databázi potřebuje mnoho začátečníků radu. Abych nemusel odpovídat na tyto dotazy dnes a denně, sepsal jsem obecný návod na blog.

Nejznámější české freehostingy

Tento seznam asi nebude úplný, nejsem si jist, jestli vím o všech freehostinzích, pokud znáte nějaký další, napište mi e-mail nebo do diskuse, přidám je do článku.

Osobně mám velmi dobré zkušenosti s QSH, mám u nich jak free, tak i placený hosting. Dříve jsem používal i AspWeb, tam bylo vše také vcelku v pořádku. AspOne neznám, takže nemůžu soudit.

Přenos souborů na server

Pro přenesení souborů na server se v drtivé většině případů používá FTP. Velmi pohodlné je použít Total Commander, ale i Průzkumník Windows tento protokol umí. Předpokládám, že FTP každý zná, a kdo ne, něco si o něm najde, není to nic těžkého. Znalost FTP patří ke základním věcem, které byste měli umět, když chcete psát webové aplikace.

Hlavní problém - databáze

Tady je u každého hostingu situace nepatrně jiná. Většinou vám poskytovatel zpřístupní nějaké webové rozhraní, kterým můžete databázi spravovat, druhou možností je nahrát MDF soubor s databází do složky App_Data a používat databázi tam.

Pokud máte odkaz a přihlašovací údaje do webového rozhraní, je nejlepší vytvořit si z databáze skript (na to se hodí třeba program Database Publishing Wizard - http://www.microsoft.com/downloads/details.aspx?familyid=56E5B1C5-BF17-42E0-A410-371A838E570A, ale pokud máte jiný, můžete použít i ten). Jakmile máte databázový skript vytvořen, spustíte jej ve webovém rozhraní (je tam určitě někde volba SQL command nebo něco takového). Skript obsahuje příkazy pro vytvoření tabulek v databázi a naplnění dat.

Pokud přístup přes webové rozhraní nemáte, vezměte databázový soubor MDF a nahrajte jej do složky App_Data (buď ho tam máte už ve složce projektu, nebo je v Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\). Patrně vás k tomuto souboru SQL Server jen tak nepustí, takže spusťte z příkazového řádku services.msc a najděte službu SQL Server (SQLEXPRESS). Tu zastavte, MDF soubor si zkopírujte (pokud máte Windows Vista, musíte mít na to práva administrátora) a nahrajte na FTP do složky App_Data. Pak službu SQL Server zase spusťte. Nakonec ještě musíte na webu do složky App_Data nastavit práva zápisu, nejčastěji v nějakém webovém administračním rozhraní.

ConnectionString

Jakmile máte databázi na serveru, pořád ještě není konec. Musíte upravit příslušný ConnectionString v souboru web.config tak, aby se připojoval k databázi správně. Jak má vypadat, to se hosting od hostingu liší, někteří poskytovatelé na to mají i generátor v administračním webovém rozhraní.

Vestavění provideři pro Membership

Další problém obvykle bývá, pokud ve své aplikaci používáte Login controls. Ve výchozím nastavení se totiž pro ukládání a správu uživatelských účtů použijí vestavění provideři, kteří data ukládají do databáze ve složce App_Data. Databáze ale zabírá 10MB a na freehostingu je každý bajt dobrý, takže pokud máte možnost spravovat databázi přes webové rozhraní a nemusíte je mít v App_Data, necpěte je tam zbytečně.

Pokud máte navíc svou databázi, hodilo by se vám, aby ASP.NET ukládalo uživatele do databáze vaší. Na to je snadná pomoc, musíte udělat dva následující kroky (a doporučuji je provést vždy už před zahájením vývoje webové aplikace).

1. Nechte si do své databáze vygenerovat tabulky pro uložení uživatelů. Ve složce Windows\Microsoft.NET\Framework\2.něco je program aspnet_regsql.exe. Ten spusťte, vyberte databázi, ve které chcete tabulky vytvořit, a průvodce vám databázi připraví.

2. Aby ASP.NET vědělo, že má uživatele ukládat do vaší databáze, přidejte do souboru web.config tento element (někam dovnitř system.web):

<membership defaultProvider="AspNetSqlMembershipProvider"> 
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
connectionStringName="váš connection string" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/"
requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>

Tím přepíšete výchozího ASP.NET providera, nezapomeňte na vyznačené místo dosadit název connectionStringu, který chcete pro ukládání uživatelů použít. Tuto změnu proveďte nejlépe hned, když webovou aplikaci vytváříte.

Počítejte také s tím, že po nahrání databáze na server budete nějak (jak, to je otázka) muset znovu uživatelské účty vytvořit. ASP.NET si totiž k uživatelům zapisuje i AppKey, což je nějaký identifikátor aplikace. Ten je ale na webhostingovém serveru jiný než u vás, tím pádem ASP.NET nebude na serveru vidět žádné uživatele. Nevím, jak se tohle má řešit správně, já jsem si vždycky napsal stránku CreateUsers.aspx, která mi pomocí kódu (Membership.CreateUser) vytvořila alespoň uživatele Admin, přiřadila ho do správné role. Pak jsem tu stránku samozřejmě ze serveru smazal, aby ji někdo nemohl zneužít. Není to ale hezká metoda a asi bude existovat i jiná, lepší možnost.

Alternativní možností je použít jinou sadu providerů, kteří také uživatelské údaje ukládají do databáze, ale tabulky mají výrazně jednodušší strukturu a lépe se na ně navazují ostatní tabulky v databázi. Doporučuji a osobně používám Altairis Simple ASP.NET SQL Providers od Michala Altaira Valáška. Nebudete s nimi mít žádné problémy, nepodporují sice úplně všechna nastavení, ale v praxi jsem nikdy nepotřeboval víc, než by uměli. Jediná nevýhoda je, že si sami neumí databázi vytvořit, musíte ručně na databázi spustit pár skriptů, které vytvoří příslušné tabulky. Chce si to přečíst dokumentaci, která je bohužel anglicky.

Poskytovatelé hostingu návody většinou poskytují

Lepší, než pokládat pořád ty samé dotazy do diskusních fór, je podívat se na webu poskytovatele hostingu, jak se databáze zprovozňují. Poskytovatelé se chtějí vyhnout záplavám e-mailů s těmito dotazy, proto to na webu rozhodně někam dali (i když je to občas schované). Na fórech málokdy lidi baví pořád dokola a dokola vysvětlovat, jak se to dělá.

Snad tento článek alespoň někomu pomůže.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback