Bagikan melalui


Menyebarkan Aplikasi Web ASP.NET dengan SQL Server Compact menggunakan Visual Studio atau Visual Web Developer: Transformasi File Web.Config - 3 dari 12

oleh Tom Dykstra

Unduh Proyek Pemula

Serangkaian tutorial ini menunjukkan kepada Anda cara menyebarkan (menerbitkan) proyek aplikasi web ASP.NET yang menyertakan database Ringkas SQL Server dengan menggunakan Visual Studio 2012 RC atau Visual Studio Express 2012 RC for Web. Anda juga dapat menggunakan Visual Studio 2010 jika Anda menginstal Pembaruan Penerbitan Web. Untuk pengenalan seri ini, lihat tutorial pertama dalam seri ini.

Untuk tutorial yang menunjukkan fitur penyebaran yang diperkenalkan setelah rilis RC Visual Studio 2012, menunjukkan cara menyebarkan edisi SQL Server selain SQL Server Compact, dan menunjukkan cara menyebarkan ke Azure App Service Web Apps, lihat ASP.NET Penyebaran Web menggunakan Visual Studio.

Gambaran Umum

Tutorial ini menunjukkan kepada Anda cara mengotomatiskan proses perubahan file Web.config saat Anda menyebarkannya ke lingkungan tujuan yang berbeda. Sebagian besar aplikasi memiliki pengaturan dalam file Web.config yang harus berbeda ketika aplikasi disebarkan. Mengotomatiskan proses pembuatan perubahan ini membuat Anda tidak perlu melakukannya secara manual setiap kali Anda menyebarkan, yang akan melelahkan dan rawan kesalahan.

Pengingat: Jika Anda mendapatkan pesan kesalahan atau sesuatu tidak berfungsi saat Anda melalui tutorial, pastikan untuk memeriksa halaman pemecahan masalah.

Transformasi Web.config versus Parameter Penyebaran Web

Ada dua cara untuk mengotomatiskan proses perubahan pengaturan file Web.config : Transformasi Web.config dan parameter Web Deploy. File transformasi Web.config berisi markup XML yang menentukan cara mengubah file Web.config saat disebarkan. Anda dapat menentukan perubahan yang berbeda untuk konfigurasi build tertentu dan untuk profil penerbitan tertentu. Konfigurasi build default adalah Debug dan Rilis, dan Anda dapat membuat konfigurasi build kustom. Profil penerbitan biasanya sesuai dengan lingkungan tujuan. (Anda akan mempelajari selengkapnya tentang menerbitkan profil di Menyebarkan ke IIS sebagai tutorial Lingkungan Pengujian.)

Parameter Web Deploy dapat digunakan untuk menentukan berbagai jenis pengaturan yang harus dikonfigurasi selama penyebaran, termasuk pengaturan yang ditemukan dalam file Web.config . Ketika digunakan untuk menentukan perubahan file Web.config , parameter Web Deploy lebih kompleks untuk disiapkan, tetapi berguna ketika Anda tidak tahu nilai yang akan diatur hingga Anda menyebarkan. Misalnya, di lingkungan perusahaan, Anda dapat membuat paket penyebaran dan memberikannya kepada seseorang di departemen IT untuk diinstal dalam produksi, dan orang tersebut harus dapat memasukkan string koneksi atau kata sandi yang tidak Anda ketahui.

Untuk skenario yang dibahas tutorial ini, Anda tahu semua yang harus dilakukan ke file Web.config , jadi Anda tidak perlu menggunakan parameter Web Deploy. Anda akan mengonfigurasi beberapa transformasi yang berbeda tergantung pada konfigurasi build yang digunakan, dan beberapa yang berbeda tergantung pada profil penerbitan yang digunakan.

Membuat File Transformasi untuk Profil Penerbitan

Di Penjelajah Solusi, perluas Web.config untuk melihat file transformasi Web.Debug.config dan Web.Release.config yang dibuat secara default untuk dua konfigurasi build default.

Web.config_transform_files

Anda dapat membuat file transformasi untuk konfigurasi build kustom dengan mengklik kanan file Web.config dan memilih Tambahkan Transformasi Konfigurasi dari menu konteks, tetapi untuk tutorial ini Anda tidak perlu melakukannya.

Anda memerlukan dua file transformasi lagi, untuk mengonfigurasi perubahan yang terkait dengan tujuan penyebaran daripada konfigurasi build. Contoh umum pengaturan semacam ini adalah titik akhir WCF yang berbeda untuk pengujian versus produksi. Dalam tutorial selanjutnya, Anda akan membuat profil publikasi bernama Uji dan Produksi, jadi Anda memerlukan file Web.Test.config dan file Web.Production.config .

File transformasi yang terkait dengan profil penerbitan harus dibuat secara manual. Di Penjelajah Solusi, klik kanan proyek ContosoUniversity dan pilih Buka Folder di Windows Explorer.

Open_folder_in_Windows_Explorer

Di Windows Explorer, pilih file Web.Release.config , salin file, lalu tempelkan dua salinannya. Ganti nama salinan ini Web.Production.config dan Web.Test.config, lalu tutup Windows Explorer.

Di Penjelajah Solusi, klik Refresh untuk melihat file baru.

Pilih file baru, klik kanan, lalu klik Sertakan dalam Proyek di menu konteks.

Termasuk file konfigurasi Pengujian dan Produksi dalam proyek

Untuk mencegah file-file ini disebarkan, pilih file tersebut di Penjelajah Solusi, lalu di jendela Properti ubah properti Tindakan Build dari Konten menjadi Tidak Ada. (File transformasi yang didasarkan pada konfigurasi build secara otomatis dicegah untuk disebarkan.)

Anda sekarang siap untuk memasukkan transformasi Web.config ke dalam file transformasi Web.config .

Membatasi Akses Log Kesalahan ke Administrator

Jika ada kesalahan saat aplikasi berjalan, aplikasi menampilkan halaman kesalahan generik sebagai pengganti halaman kesalahan yang dihasilkan sistem, dan menggunakan paket Elmah NuGet untuk pengelogan dan pelaporan kesalahan. Elemen customErrors dalam file Web.config menentukan halaman kesalahan:

<customErrors mode="RemoteOnly" defaultRedirect="~/GenericErrorPage.aspx">
  <error statusCode="404" redirect="~/GenericErrorPage.aspx" />
</customErrors>

Untuk melihat halaman kesalahan, ubah mode sementara atribut customErrors elemen dari "RemoteOnly" menjadi "Aktif" dan jalankan aplikasi dari Visual Studio. Menyebabkan kesalahan dengan meminta URL yang tidak valid, seperti Studentsxxx.aspx. Alih-alih halaman kesalahan "halaman tidak ditemukan" yang dihasilkan IIS, Anda akan melihat halaman GenericErrorPage.aspx .

Error_page

Untuk melihat log kesalahan, ganti semua yang ada di URL setelah nomor port dengan elmah.axd (misalnya dalam cuplikan layar, http://localhost:51130/elmah.axd) dan tekan Enter:

Elmah_log_page

Jangan lupa untuk mengatur customErrors kembali elemen ke mode "RemoteOnly" setelah selesai.

Di komputer pengembangan Anda, lebih mudah untuk mengizinkan akses gratis ke halaman log kesalahan, tetapi dalam produksi yang akan menjadi risiko keamanan. Untuk situs produksi, Anda dapat menambahkan aturan otorisasi yang membatasi akses log kesalahan hanya untuk administrator dengan mengonfigurasi transformasi dalam file Web.Production.config .

Buka Web.Production.config dan tambahkan elemen baru location segera setelah tag pembuka configuration , seperti yang ditunjukkan di sini. (Pastikan Anda hanya location menambahkan elemen dan bukan markup sekitarnya yang ditampilkan di sini hanya untuk memberikan beberapa konteks.)

<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>

Nilai Transform atribut "Insert" menyebabkan elemen ini location ditambahkan sebagai saudara kandung ke elemen yang ada location dalam file Web.config . (Sudah ada satu location elemen yang menentukan aturan otorisasi untuk halaman Perbarui Kredit .) Saat menguji situs produksi setelah penyebaran, Anda akan menguji untuk memverifikasi bahwa aturan otorisasi ini efektif.

Anda tidak perlu membatasi akses log kesalahan di lingkungan pengujian, jadi Anda tidak perlu menambahkan kode ini ke file Web.Test.config .

Catatan

Catatan Keamanan Tidak pernah menampilkan detail kesalahan kepada publik dalam aplikasi produksi, atau menyimpan informasi tersebut di lokasi publik. Penyerang dapat menggunakan informasi kesalahan untuk menemukan kerentanan di situs. Jika Anda menggunakan ELMAH di aplikasi Anda sendiri, pastikan untuk menyelidiki cara di mana ELMAH dapat dikonfigurasi untuk meminimalkan risiko keamanan. Contoh ELMAH dalam tutorial ini tidak boleh dianggap sebagai konfigurasi yang direkomendasikan. Ini adalah contoh yang dipilih untuk mengilustrasikan cara menangani folder tempat aplikasi harus dapat membuat file.

Mengatur Indikator Lingkungan

Skenario umumnya adalah memiliki pengaturan file Web.config yang harus berbeda di setiap lingkungan yang Anda sebarkan. Misalnya, aplikasi yang memanggil layanan WCF mungkin memerlukan titik akhir yang berbeda di lingkungan pengujian dan produksi. Aplikasi Contoso University juga mencakup pengaturan semacam ini. Pengaturan ini mengontrol indikator yang terlihat pada halaman situs yang memberi tahu Anda lingkungan tempat Anda berada, seperti pengembangan, pengujian, atau produksi. Nilai pengaturan menentukan apakah aplikasi akan menambahkan "(Dev)" atau "(Test)" ke judul utama di halaman master Site.Master :

Environment_indicator

Indikator lingkungan dihilangkan ketika aplikasi berjalan dalam produksi.

Halaman web Contoso University membaca nilai yang diatur dalam appSettings file Web.config untuk menentukan lingkungan apa yang dijalankan aplikasi:

<appSettings>
    <add key="Environment" value="Dev" />
</appSettings>

Nilainya harus "Uji" di lingkungan pengujian, dan "Prod" di lingkungan produksi.

Buka Web.Production.config dan tambahkan appSettings elemen segera sebelum tag pembuka elemen yang location Anda tambahkan sebelumnya:

<appSettings>
    <add key="Environment" value="Prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>

Nilai xdt:Transform atribut "SetAttributes" menunjukkan bahwa tujuan transformasi ini adalah untuk mengubah nilai atribut elemen yang ada dalam file Web.config . Nilai xdt:Locator atribut "Match(key)" menunjukkan bahwa elemen yang akan dimodifikasi adalah yang atributnya key cocok dengan key atribut yang ditentukan di sini. Satu-satunya atribut add elemen lainnya adalah value, dan itulah yang akan diubah dalam file Web.config yang disebarkan. Kode ini menyebabkan value atribut Environment appSettings elemen diatur ke "Prod" dalam file Web.config yang disebarkan ke produksi.

Selanjutnya, terapkan perubahan yang sama ke file Web.Test.config , kecuali atur value ke "Uji" alih-alih "Prod". Setelah selesai, bagian appSettings di Web.Test.config akan terlihat seperti contoh berikut:

<appSettings>
    <add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>

Menonaktifkan Mode Debug

Untuk build Rilis, Anda tidak ingin debugging diaktifkan terlepas dari lingkungan mana yang Anda sebarkan. Secara default , file transformasi Web.Release.config secara otomatis dibuat dengan kode yang menghapus debug atribut dari compilation elemen :

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

Atribut Transform menyebabkan debug atribut dihilangkan dari file Web.config yang disebarkan setiap kali Anda menyebarkan build Rilis.

Transformasi yang sama ini ada di file transformasi Uji dan Produksi karena Anda membuatnya dengan menyalin file transformasi Rilis. Anda tidak perlu menduplikasinya di sana, jadi buka setiap file tersebut , hapus elemen kompilasi , dan simpan dan tutup setiap file.

Mengatur String Koneksi

Dalam kebanyakan kasus, Anda tidak perlu menyiapkan transformasi string koneksi, karena Anda dapat menentukan string koneksi di profil penerbitan. Tetapi ada pengecualian saat Anda menyebarkan database Ringkas SQL Server dan Anda menggunakan Migrasi Pertama Kode Kerangka Kerja Entitas untuk memperbarui database di server tujuan. Untuk skenario ini, Anda harus menentukan string koneksi tambahan yang akan digunakan di server untuk memperbarui skema database. Untuk menyiapkan transformasi ini, tambahkan elemen connectionStrings> segera setelah tag konfigurasi> pembukaan< di File transformasi Web.Test.config dan 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 menentukan bahwa string koneksi ini akan ditambahkan ke elemen connectionStrings dalam file Web.config yang disebarkan. (Proses penerbitan membuat string koneksi tambahan ini secara otomatis untuk Anda jika tidak ada, tetapi secara default atribut providerName diatur ke System.Data.SqlClient, yang tidak berfungsi untuk SQL Server Compact. Dengan menambahkan string koneksi secara manual, Anda menjaga proses penyebaran agar tidak membuat elemen string koneksi dengan nama penyedia yang salah.)

Anda sekarang telah menentukan semua transformasi Web.config yang Anda butuhkan untuk menyebarkan aplikasi Contoso University untuk pengujian dan produksi. Dalam tutorial berikut, Anda akan mengurus tugas penyusunan penyebaran yang memerlukan pengaturan properti proyek.

Informasi Selengkapnya

Untuk informasi selengkapnya tentang topik yang dibahas oleh tutorial ini, lihat skenario transformasi Web.config di ASP.NET Peta Konten Penyebaran.