Nasazení webové aplikace ASP.NET s SQL Serverem Compact pomocí sady Visual Studio nebo Visual Web Developer: Transformace souborů Web.Config – 3 z 12
Tom Dykstra
Tato série kurzů ukazuje, jak nasadit (publikovat) projekt webové aplikace ASP.NET, který zahrnuje databázi SQL Server Compact pomocí sady Visual Studio 2012 RC nebo Visual Studio Express 2012 RC pro web. Sadu Visual Studio 2010 můžete použít také při instalaci aktualizace publikování webu. Úvod do série najdete v prvním kurzu série.
Kurz, který ukazuje funkce nasazení představené po vydání VERZE RC sady Visual Studio 2012, ukazuje, jak nasadit edice SQL Serveru jiné než SQL Server Compact a jak nasadit do Aplikace Azure Service Web Apps, viz ASP.NET Nasazení webu pomocí sady Visual Studio.
Přehled
V tomto kurzu se dozvíte, jak automatizovat proces změny souboru Web.config při nasazení do různých cílových prostředí. Většina aplikací má nastavení v souboru Web.config , které se musí při nasazení aplikace lišit. Automatizace procesu provádění těchto změn vám umožní provádět je ručně při každém nasazení, což by bylo zdlouhavé a náchylné k chybám.
Připomenutí: Pokud se při procházení kurzu zobrazí chybová zpráva nebo něco nefunguje, nezapomeňte se podívat na stránku pro řešení potíží.
Transformace Web.config versus parametry nasazení webu
Existují dva způsoby, jak automatizovat proces změny nastavení souboru Web.config : transformace Web.config a parametry nasazení webu. Transformační soubor Web.config obsahuje kód XML, který určuje, jak změnit soubor Web.config při nasazení. Pro konkrétní konfigurace sestavení a pro konkrétní profily publikování můžete zadat různé změny. Výchozí konfigurace sestavení jsou Debug a Release a můžete vytvářet vlastní konfigurace sestavení. Profil publikování obvykle odpovídá cílovému prostředí. (Další informace o profilech publikování najdete v tématu Nasazení do služby IIS jako kurz testovacího prostředí .)
Parametry nasazení webu lze použít k určení mnoha různých typů nastavení, která je potřeba nakonfigurovat během nasazení, včetně nastavení nalezených v souborech Web.config . Při použití k určení změn souboru Web.config jsou parametry nasazení webu složitější, ale jsou užitečné, pokud neznáte hodnotu, kterou chcete nastavit, dokud nenasadíte. V podnikovém prostředí můžete například vytvořit balíček nasazení a dát ho osobě v IT oddělení, která se má nainstalovat v produkčním prostředí, a tato osoba musí být schopná zadat připojovací řetězec nebo hesla, která neznáte.
Pro scénář, který tento kurz popisuje, znáte vše, co je nutné provést do souboru Web.config , takže nemusíte používat parametry nasazení webu. Nakonfigurujete některé transformace, které se liší v závislosti na použité konfiguraci sestavení a některé, které se liší v závislosti na použitém profilu publikování.
Vytváření transformačních souborů pro profily publikování
V Průzkumník řešení rozbalte web.config, aby se zobrazily transformační soubory Web.Debug.config a Web.Release.config, které jsou vytvořeny ve výchozím nastavení pro dvě výchozí konfigurace sestavení.
Transformační soubory pro vlastní konfigurace sestavení můžete vytvořit tak, že kliknete pravým tlačítkem na soubor Web.config a v místní nabídce zvolíte Přidat transformace konfigurace, ale v tomto kurzu to nemusíte dělat.
K konfiguraci změn souvisejících s cílem nasazení místo konfigurace sestavení potřebujete dva další transformační soubory. Typickým příkladem tohoto typu nastavení je koncový bod WCF, který se liší pro testování a produkční prostředí. V pozdějších kurzech vytvoříte profily publikování s názvem Test a Production, takže potřebujete soubor Web.Test.config a soubor Web.Production.config .
Transformační soubory, které jsou svázané s profily publikování, musí být vytvořeny ručně. V Průzkumník řešení klikněte pravým tlačítkem na projekt ContosoUniversity a v Průzkumníku Windows vyberte Otevřít složku.
V Průzkumníku Windows vyberte soubor Web.Release.config, zkopírujte soubor a vložte dvě jeho kopie. Přejmenujte tyto kopie Web.Production.config a Web.Test.config a zavřete Průzkumníka Windows.
V Průzkumník řešení kliknutím na Aktualizovat zobrazíte nové soubory.
Vyberte nové soubory, klikněte pravým tlačítkem myši a potom v místní nabídce klepněte na příkaz Zahrnout do projektu .
Pokud chcete zabránit nasazení těchto souborů, vyberte je v Průzkumník řešení a potom v okně Vlastnosti změňte vlastnost Akce sestavení z obsahu na None. (Transformačním souborům založeným na konfiguracích sestavení se automaticky zabrání nasazení.)
Teď jste připraveni zadat transformace Web.config do transformačních souborů Web.config .
Omezení přístupu k protokolu chyb správcům
Pokud při spuštění aplikace dojde k chybě, zobrazí aplikace místo systémové chybové stránky obecnou chybovou stránku a pro protokolování chyb a hlášení chyb používá balíček Elmah NuGet. Prvek customErrors
v souboru Web.config určuje chybovou stránku:
<customErrors mode="RemoteOnly" defaultRedirect="~/GenericErrorPage.aspx">
<error statusCode="404" redirect="~/GenericErrorPage.aspx" />
</customErrors>
Pokud chcete zobrazit chybovou stránku, dočasně změňte mode
atribut elementu customErrors
z RemoteOnly na Zapnuto a spusťte aplikaci ze sady Visual Studio. Pokud požadujete neplatnou adresu URL, například Studentsxxx.aspx, může dojít k chybě. Místo chybové stránky "stránka nebyla nalezena" vygenerovaná službou IIS se zobrazí GenericErrorPage.aspx stránka.
Pokud chcete zobrazit protokol chyb, nahraďte všechno v adrese URL za číslem portu elmah.axd (například na snímku http://localhost:51130/elmah.axd
obrazovky) a stiskněte Enter:
Nezapomeňte po dokončení nastavit customErrors
prvek zpět do režimu RemoteOnly.
Na vývojovém počítači je vhodné povolit volný přístup ke stránce protokolu chyb, ale v produkčním prostředí by to bylo bezpečnostní riziko. Pro produkční web můžete přidat autorizační pravidlo, které omezuje přístup k protokolu chyb pouze správcům konfigurací transformace v souboru Web.Production.config .
Otevřete Web.Production.config a přidejte nový location
prvek hned za levou configuration
značku, jak je znázorněno zde. (Ujistěte se, že přidáte pouze location
prvek, nikoli okolní značku, která je zde zobrazena pouze pro poskytnutí určitého kontextu.)
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="elmah.axd" xdt:Transform="Insert">
<system.web>
<authorization>
<allow roles="Administrator" />
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
Transform
Hodnota atributu "Insert" způsobí, že tento location
prvek bude přidán jako seznam na stejné straně k jakýmkoli existujícím location
prvkům v souboru Web.config. (Existuje již jeden location
prvek, který určuje autorizační pravidla pro stránku Aktualizovat kredity .) Při testování produkční lokality po nasazení otestujete, abyste ověřili, že toto autorizační pravidlo je efektivní.
V testovacím prostředí nemusíte omezovat přístup k protokolům chyb, takže tento kód nemusíte přidávat do souboru Web.Test.config .
Poznámka:
Poznámka zabezpečení – Nikdy nezobrazuje podrobnosti o chybě veřejnosti v produkční aplikaci nebo tyto informace uložte do veřejného umístění. Útočníci můžou k zjišťování ohrožení zabezpečení na webu použít informace o chybách. Pokud používáte ELMAH ve vlastní aplikaci, nezapomeňte prozkoumat způsoby, kterými je možné ELMAH nakonfigurovat, aby se minimalizovala rizika zabezpečení. Příklad ELMAH v tomto kurzu by neměl být považován za doporučenou konfiguraci. Je to příklad, který byl vybrán, aby ilustroval, jak zpracovat složku, ve které musí být aplikace schopna vytvářet soubory.
Nastavení indikátoru prostředí
Běžným scénářem je nastavení souboru Web.config , které se musí v každém prostředí, do kterého nasadíte, lišit. Například aplikace, která volá službu WCF, může v testovacím a produkčním prostředí potřebovat jiný koncový bod. Aplikace Contoso University obsahuje také nastavení tohoto typu. Toto nastavení řídí viditelný indikátor na stránkách webu, které vám říká, ve kterém prostředí se nacházíte, například vývoj, testování nebo produkce. Hodnota nastavení určuje, zda aplikace připojí k hlavnímu nadpisu na stránce předlohy Site.Master "(Dev)" nebo "(Test)":
Indikátor prostředí se vynechá, když je aplikace spuštěná v produkčním prostředí.
Webové stránky Contoso University čtou hodnotu nastavenou v appSettings
souboru Web.config , aby bylo možné určit, ve kterém prostředí aplikace běží:
<appSettings>
<add key="Environment" value="Dev" />
</appSettings>
Hodnota by měla být "Test" v testovacím prostředí a "Prod" v produkčním prostředí.
Otevřete Web.Production.config a přidejte prvek bezprostředně před levou appSettings
značku location
prvku, který jste přidali dříve:
<appSettings>
<add key="Environment" value="Prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
xdt:Transform
Hodnota atributu SetAttributes označuje, že účelem této transformace je změnit hodnoty atributů existujícího prvku v souboru Web.config. Hodnota xdt:Locator
atributu "Match(key)" označuje, že prvek, který má být změněn, je ten, jehož key
atribut odpovídá atributu zadanému key
zde. Jediným dalším atributem elementu add
je value
, a to je to, co se změní v nasazeného souboru Web.config . Tento kód způsobívalue
, že atribut elementu appSettings
Environment
bude nastaven na "Prod" v souboru Web.config, který je nasazen do produkčního prostředí.
Potom použijte stejnou změnu u souboru Web.Test.config s výjimkou nastavení value
"Test" místo "Prod". Po dokončení appSettings
bude část web.Test.config vypadat jako v následujícím příkladu:
<appSettings>
<add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
Zakázání režimu ladění
U sestavení vydané verze nechcete povolit ladění bez ohledu na to, do kterého prostředí nasazujete. Ve výchozím nastavení se soubor transformace Web.Release.config automaticky vytvoří s kódem, který odebere debug
atribut z elementu compilation
:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
Atribut Transform
způsobí vynechání atributu debug
z nasazeného souboru Web.config při každém nasazení sestavení vydané verze.
Stejná transformace je v souborech transformace Test a Production, protože jste je vytvořili zkopírováním souboru transformace vydané verze. Nemusíte ho tam duplikovat, takže otevřete každý z těchto souborů, odeberte element kompilace a uložte a zavřete každý soubor.
Nastavení připojovacích řetězců
Ve většině případů není nutné nastavovat transformace připojovací řetězec, protože můžete zadat připojovací řetězec v profilu publikování. Pokud ale nasazujete databázi SQL Server Compact a používáte Migrace Entity Framework Code First k aktualizaci databáze na cílovém serveru, dojde k výjimce. V tomto scénáři musíte zadat další připojovací řetězec, které se použijí na serveru pro aktualizaci schématu databáze. Chcete-li nastavit tuto transformaci, přidejte <element connectionStrings> bezprostředně za počáteční< konfigurační> značku v souboru Web.Test.config i soubory transformace Web.Production.config:
<connectionStrings>
<add name="SchoolContext_DatabasePublish" connectionString="Data Source=|DataDirectory|School-Prod.sdf" providerName="System.Data.SqlServerCe.4.0" xdt:Transform="Insert"/>
</connectionStrings>
Atribut Transform
určuje, že tento připojovací řetězec bude přidán do elementu connectionStrings v nasazeného souboru Web.config. (Proces publikování vytvoří tento další připojovací řetězec automaticky pro vás, pokud neexistuje, ale ve výchozím nastavení se atribut providerName nastaví na System.Data.SqlClient
, který nefunguje pro SQL Server Compact. Přidáním připojovací řetězec ručně zabráníte procesu nasazení vytvořit prvek připojovací řetězec s nesprávným názvem zprostředkovatele.)
Teď jste zadali všechny transformace Web.config , které potřebujete k nasazení aplikace Contoso Pro vysokoškoláky pro testování a produkci. V následujícím kurzu se postaráte o úlohy nastavení nasazení, které vyžadují nastavení vlastností projektu.
Další informace
Další informace o tématech popsaných v tomto kurzu najdete ve scénáři transformace Web.config v mapě obsahu nasazení ASP.NET.