ASP.NET Konfigurasi Hosting Bersama 2.0/3.5
oleh Walter Oliver
Pengantar
IIS menawarkan penyempurnaan untuk konten dinamis, terutama ASP.NET. Di IIS 7 ke atas, model ekstensibilitas runtime ASP.NET diintegrasikan ke dalam server inti. Hal ini memungkinkan pengembang untuk sepenuhnya memperluas IIS dengan fungsionalitas yang kaya ASP.NET 2.0 atau lebih tinggi dan .NET Framework, alih-alih menggunakan API C++ tingkat bawah. Aplikasi ASP.NET yang ada akan mendapat manfaat dari integrasi yang lebih dekat dengan dapat menggunakan fitur yang ada seperti autentikasi formulir, peran, dan penembolokan output untuk semua jenis konten, bukan hanya halaman .aspx.
Untuk mempelajari selengkapnya tentang beberapa fitur utama dan manfaat integrasi ASP.NET dengan IIS, lihat Gambaran Umum Server Web Inti. Untuk informasi tentang dan cara menginstal .NET Framework 3.5, lihat https://www.microsoft.com/net/ atau ASP.NET situs komunitas.
Pengaturan berikut digunakan di server Web sebagai bagian dari arsitektur hosting bersama yang disebutkan dalam artikel "Merencanakan Arsitektur Hosting Bersama" di Panduan Hosting. Untuk mempelajari selengkapnya tentang mengapa pengaturan ini direkomendasikan dan untuk detail tambahan tentang cara mengonfigurasinya, unduh ASP.NET Panduan Penyebaran Hosting 4.
Mengonfigurasi Tingkat Kepercayaan
Tingkat kepercayaan memungkinkan Anda menentukan aturan keamanan untuk ASP.NET. Mereka menentukan jenis operasi apa yang dapat dilakukan aplikasi, seperti membaca dari disk atau mengakses registri. Tingkat kepercayaan yang direkomendasikan adalah Sedang, yang memungkinkan banyak operasi umum tetapi membatasi banyak aplikasi berbahaya. Jika Anda perlu mengizinkan lebih banyak operasi daripada yang diizinkan kepercayaan Sedang, Anda harus membuat tingkat kepercayaan kustom.
Untuk mengonfigurasi tingkat kepercayaan kustom dan mengonfigurasi izin tambahan
Arahkan ke direktori
%windir%\Microsoft.NET\Framework \{version}\ CONFIG
.Salin file kebijakan Kepercayaan sedang, web_mediumtrust.config, untuk membuat file kebijakan baru di direktori
%windir%\Microsoft.NET\Framework\{version}\ CONFIG\
yang sama.Ganti nama file untuk menunjukkan bahwa file tersebut adalah tingkat kepercayaan kustom, misalnya, web_CustomTrust.config.
Buka file baru, web_CustomTrust.config, dan temukan bagian WebPermission .
...
<IPermission class="WebPermission"
version="1" <ConnectAccess> <URI uri="$OriginHost$" /> </ConnectAccess> </IPermission>
...
Edit WebPermission sehingga elemen ConnectAccess dihapus dan Tidak Dibatasi diatur ke true.
...
<IPermission class="WebPermission"
version="1" Unrestricted="true"/>
...
Komentari PrintingPermission dan EnvironmentPermission, kecuali diketahui bahwa mereka diperlukan untuk lingkungan hosting bersama.
Tambahkan elemen baru
<trustLevel>
ke bagian<securityPolicy>
file Web.config, seperti yang ditunjukkan di bawah ini:<location allowOverride="true">
<system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
Kunci tingkat kepercayaan sehingga tidak dapat diubah oleh aplikasi di server, dengan mengatur elemen allowOverride lokasi ke false.
<location allowOverride="false"> <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
Mengonfigurasi Konten yang akan Dilayani dari Server File Jarak Jauh
Saat mengonfigurasi ASP.NET untuk bekerja dengan konten yang disimpan di server file jarak jauh, diperlukan beberapa langkah tambahan.
Ketika IIS menerima konten dari server file jarak jauh, IIS meniru pengguna yang diautentikasi. Ini adalah pengguna yang secara khusus ditetapkan sebagai pengguna direktori virtual, atau jika tidak ditentukan, pengguna anonim. Panduan IIS menyatakan bahwa pengguna kumpulan aplikasi harus digunakan sebagai pengguna anonim, jadi dalam hal ini identitas yang ditiru adalah identitas kumpulan aplikasi. Menggunakan satu identitas untuk semua akses (anonim, kumpulan aplikasi, dan direktori virtual) sangat menyederhanakan penyebaran.
Untuk menjalankan beberapa aplikasi ASP.NET dari server file jarak jauh, pengguna yang ditiru harus memiliki akses ke sementara Windows dan direktori kompilasi sementara.
Untuk menyajikan konten ASP.NET dari berbagi server file
Berikan izin untuk semua identitas kumpulan aplikasi ke
%windir%\Temp
direktori dengan mengedit ACL untuk folder.Tambahkan kebijakan Keamanan Akses Kode (CAS) untuk memungkinkan ASP.NET akses yang sesuai ke berbagi server file. Untuk melakukan ini, buka perintah dan jalankan perintah berikut:
%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1. -url "file://\\remotefileserver\content$\*" FullTrust
Mengonfigurasi Pengaturan Pengumpul Sampah
Kerangka kerja .NET menggunakan pengumpulan sampah otomatis untuk mengelola memori untuk semua aplikasi. Ketika pengumpul sampah (GC) memutuskan bahwa sampah yang cukup telah terakumulasi dan efisien untuk melakukannya, ia melakukan koleksi untuk membebaskan beberapa memori. Proses ini sepenuhnya otomatis, tetapi ada pengaturan yang dapat membuat proses lebih efisien.
Untuk informasi selengkapnya tentang GC, lihat "Bab 5 - Meningkatkan Performa Kode Terkelola" dan lihat bagian Sampah Dijelaskan.
Mengaktifkan Pengumpul Sampah Stasiun Kerja
Secara default, GC Server digunakan oleh .NET Framework untuk mengoptimalkan kecepatan dan beban CPU. Untuk hosting bersama, di mana memori lebih sering menjadi batasan untuk sejumlah situs aktif, Workstation GC harus digunakan. Workstation GC mengoptimalkan memori.
Untuk mempelajari selengkapnya tentang pengaturan ini, lihat artikel KB, "Anda mungkin menerima pesan kesalahan, atau komputer berhenti merespons, saat Anda menghosting aplikasi Web yang menggunakan ASP.NET di komputer yang menjalankan Windows Server 2003" (https://support.microsoft.com/kb/911716
).
Menonaktifkan Pengumpul Sampah Serentak
Ada 3 versi GC: Server, Workstation dengan diaktifkan bersamaan, dan Workstation dengan dinonaktifkan bersamaan. Workstation GC bersamaan ditujukan untuk skenario klien. Sama seperti Server GC memprioritaskan throughput dan skalabilitas dengan biaya memori, Workstation GC bersamaan memprioritaskan responsivitas dengan biaya memori. Untuk mengoptimalkan memori, nonaktifkan pengumpulan sampah bersamaan saat Anda menggunakan Workstation GC.
Mengaktifkan Pengaturan gcTrimCommitOnLowMemory
Karena GC memegang memori untuk alokasi di masa depan, ruang berkomitmennya bisa lebih dari apa yang benar-benar diperlukan. Ruang ini dapat dikurangi untuk mengakomodasi situasi ketika ada beban berat pada memori sistem. Ketika pengaturan ini diaktifkan, GC mengevaluasi beban memori sistem dan memasuki mode pemangkasan ketika beban mencapai 90%. Mempertahankan mode pemangkasan sampai beban turun di bawah 85%. Ketika kondisi mengizinkan, GC dapat memutuskan bahwa pengaturan tidak akan membantu aplikasi dan mengabaikannya.
Untuk mengonfigurasi pengaturan GC
Arahkan ke direktori
%windir%\Microsoft.NET\Framework\{version}
.Buka file aspnet.config, dan temukan
<gcServer>
elemen . Jika elemen tidak ada, buat entri menggunakan Langkah 3....
<configuration> <runtime> <gcServer enabled="true"/> </runtime> </configuration> ...
Tambahkan tiga elemen berikut di dalam bagian
<runtime>
:...
<configuration> <runtime> <gcServer enabled="false" />
<gcConcurrent enabled="false" /> <gcTrimCommitOnLowMemory enabled="true" /> </runtime> </configuration> ...
Simpan file dan tutup.