Setting Maximum RequestLength dengan WebConfiguration [WebMatrix]

Seringkali ketika kita menciptakan sebuah aplikasi berbasis web, kita memasukan fitur yang mengijinkan pengguna untuk meng-upload file kedalam aplikasi kita. Bisa berupa file berbentuk audio, video, dokumen, dsb. Salah satu pengalaman saya adalah ketika saya menginginkan untuk meng-upload sebuah file dengan besaran tertentu, terjadi kesalahan System.Web.HttpException: Maximum request length exceeded. Pada awal mulanya saya mengira terjadi kesalahan pada baris program saya. Akan tetapi ketika saya mencoba untuk meng-upload file dengan besaran yang kecil (4Mb), program bisa berjalan dengan baik. Lalu akhirnya saya menemukan banyak sekali refrensi terhadap kesalahan itu yang akhirnya memotivasi saya untuk membagikannya juga.

Pelajaran yang akan didapat pada tutorial ini:

  • Penggunaan ASP.NET Web Helper. Helper adalah semacam add-on yang dapat kita gunakan untuk membantu pembuatan aplikasi kita. Terdapat banyak sekali helper yang bisa Anda coba explore lebih dalam lagi seperti: Twitter Helper, facebook Helper, Bing Helper, dsb. Pada tutorial kali ini Anda akan diperkenalkan dengan ASP.NET Web Helper.
  • Membuat form yang mengijinkan user untuk meng-upload file yang dimilikinya kedalam server.
  • Bagaimana melakukan setting terhadap server untuk memperbesar request length yang disediakan.

Enjoy the tutorial. Feel free to ask me. Smile

  1. Bukalah WebMatrix anda dan buatlah project dengan memilih template empty project. Berilah nama project sesuai dengan keinginan Anda.
  2. Pada bagian Workspace, pilihlah Site → ASP.NET Web Pages Administrationimage
  3. Setelah Anda memilih ASP.NET Web Pages Administration, Anda akan diperhadapkan dengan halaman seperti dibawah ini:image
  4. Isilah textbox Enter Password dan Confirm Password (harus sama). Kata sandi ini nantinya akan dipergunakan sebagai kata sandi setiap kali Anda menggunakan ASP.NET Web Pages Administration (digunakan pada project ini saja).
  5. Setelah Anda mengisi kata sandi tersebut, Anda akan mendapati pesan konfirmasi yang mengharuskan Anda untuk

    menghilangkan  karakter _ (underscore) pada file _Password.config  yang terdapat pada folder  App_Data/Admin pada project Anda. Apabila anda tidak menemukan file yang dimaksud, cobalah untuk melakukan refresh pada bagian files dengan jalan: pilihlah project Anda → klik kanan → refresh. Berikut adalah tampilan dari file yang ditambahkan otomatis pada project Anda: image

  6. Setelah mengubah nama file tersebut menjadi Password.config, cobalah menjalankan lagi ASP.NET Web Pages Administration (Langkah 1) dan Anda akan mendapati form berikut:image

  7. Isikanlah sandi Anda dan cobalah untuk mencari Helper ASP.NET Web Helpers Library 1.15 untuk kemudian meng-install helper tersebut pada project Anda(pada langkah ini Anda diharuskan memiliki koneksi internet).

  8. Setelah Anda berhasil meng-install helper Anda akan mendapati tambahan beberapa file berikut:image

  9. Tambahkan folder baru dengan nama UploadedFiles pada root project Anda yang berfungsi sebagai folder penampung file-file yang di-upload pada project Anda.

  10. Buatlah sebuah file berekstensi .cshtml dengan nama uploadFile.cshtml dan tuliskanlah baris program berikut:

       1: @{
       2:     var fileName = "";
       3:     if(IsPost){
       4:         var fileSavePath = "";
       5:         var uploadedFile = Request.Files[0];
       6:         fileName = Path.GetFileName(uploadedFile.FileName);
       7:         fileSavePath = Server.MapPath("~/UploadedFiles/"+fileName);
       8:         uploadedFile.SaveAs(fileSavePath);
       9:     }
      10: }
      11: <!DOCTYPE html>
      12:  
      13: <html lang="en">
      14:     <head>
      15:         <meta charset="utf-8" />
      16:         <title>File Upload</title>
      17:     </head>
      18:     <body>
      19:         <h1>File Upload</h1>
      20:         @FileUpload.GetHtml(initialNumberOfFiles:1,
      21:             allowMoreFilesToBeAdded:false, includeFormTag:true,
      22:             uploadText:"Upload")
      23:         
      24:         @if(IsPost){
      25:             <span>File Uploaded!</span>
      26:         }
      27:     </body>
      28: </html>

     

  11. Jalankanlah halaman tersebut dan cobalah untuk melakukan upload file dengan besar kurang dari 1 Mb. Lakukanlah juga pengecekan untuk melihat pada folder UploadedFiles dengan cara melakukan refresh.

  12. Cobalah melakukan upload file dengan besar lebih dari 4 Mb, Anda akan mendapati kesalahan berikut:image

  13. Untuk menghindari kesalahan tersebut, Anda dapat memberikan pengaturan terhadap server (IIS) dengan menambahkan file dengan ekstensi .config. Berilah nama Web.Config dan isikanlah baris program berikut apabila Anda menginginkan batasan maksimum adalah 100Mb (104857600 byte):

       1: <?xml version="1.0"?>
       2:  
       3: <configuration>
       4:     <system.web>
       5:         <httpRuntime maxRequestLength="104857600" />
       6:     </system.web>
       7:     <system.webServer>
       8:         <security>
       9:             <requestFiltering>
      10:                 <requestLimits maxAllowedContentLength="104857600" />
      11:             </requestFiltering>
      12:         </security>
      13:     </system.webServer>
      14: </configuration>

     

  14. Cobalah untuk melakukan upload file dengan besar < 100 Mb. Smile

Secara default, IIS hanya akan melayani upload dengan besar maksimum 4096KB (40 Megabyte) saja. Oleh karena itu diperlukan Web.config yang akan mengatur bagaimana IIS mengeksekusi perintah. Anda dapat mempelajari lebih lanjut mengenai pengaturan IIS Express disini. Pada tutorial disebutkan bagaimana cara untuk memberikan batasan sebesar 100 Megabyte. Akan tetapi kelihatannya IIS sendiri memang membatasi kira-kira 2 Gigabyte untuk maksimum RequestLength-nya.

Published Tuesday, February 7, 2012 1:05 AM by Temmy Raharjo
Powered by Community Server (Commercial Edition), by Telligent Systems