Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Tom FitzMacken
Artikel ini menjelaskan masalah yang mungkin Anda miliki saat bekerja dengan ASP.NET Web Pages (Razor) dan beberapa solusi yang disarankan.
Versi perangkat lunak
- Halaman Web ASP.NET (Razor) 3
Tutorial ini juga berfungsi dengan ASP.NET Web Pages 2 dan ASP.NET Web Pages 1.0.
Topik ini berisi bagian berikut:
- Masalah dengan Halaman Yang Sedang Berjalan
- Masalah dengan Kode Razor
- Masalah dengan Keamanan dan Keanggotaan
- Masalah dengan Mengirim Email
- Sumber Daya Tambahan
Untuk pertanyaan umum, lihat FAQ ASP.NET Web Pages (Razor).
Masalah dengan Halaman Yang Sedang Berjalan
Berbagai masalah dapat mencegah halaman .cshtml dan .vbhtml berjalan dengan benar. Bagian ini mencantumkan pesan kesalahan umum dan kemungkinan penyebabnya.
Kesalahan HTTP 403 - Terlarang: Akses ditolak
Anda tidak memiliki izin untuk melihat direktori atau halaman ini menggunakan kredensial yang Anda berikan.
Kesalahan ini dapat terjadi jika server tidak menjalankan versi .NET Framework yang benar. Pastikan bahwa komputer yang menjalankan server (secara lokal atau jarak jauh) setidaknya telah menginstal .NET Framework 4. Pastikan juga bahwa aplikasi itu sendiri dikonfigurasi untuk menjalankan versi yang tepat.
Jika Anda melihat masalah ini secara lokal saat bekerja di WebMatrix, klik ruang kerja Situs , lalu di tampilan pohon klik Pengaturan. Di daftar Pilih versi .NET Framework, pilih .NET 4 (Terintegrasi). Jika versi ini sudah diatur, coba jalankan WebMatrix sebagai administrator.
Pastikan bahwa akar situs web Anda memiliki setidaknya satu file .cshtml di dalamnya.
Jika Anda melihat kesalahan ini ketika server web berada di server jarak jauh, hubungi administrator server. Pastikan server telah menginstal .NET Framework 4 atau yang lebih baru. Pastikan juga bahwa aplikasi berjalan di kumpulan aplikasi yang dikonfigurasi untuk menggunakan versi the.NET Framework tersebut.
Jika Anda memiliki kontrol atas server, pastikan server menjalankan versi .NET Framework yang benar. Anda mungkin juga mencoba memperbaiki penginstalan dengan menjalankan aspnet_regiis -iru perintah . (Misalnya, jika Anda menginstal IIS setelah menginstal .NET Framework, IIS tidak akan dikonfigurasi dengan benar untuk menjalankan halaman ASP.NET.) Untuk informasi selengkapnya, lihat Alat Pendaftaran IIS ASP.NET (Aspnet_regiis.exe).
Kesalahan HTTP 403.14 - Terlarang
Server Web dikonfigurasi untuk tidak mencantumkan isi direktori ini.
Kesalahan ini dapat terjadi jika Anda meminta sumber daya yang dilindungi (seperti file Web.config ) atau yang ada di folder yang dilindungi (seperti App_Data atau App_Code).
Kesalahan HTTP 404.17 - Tidak Ditemukan
Konten yang diminta tampaknya skrip dan tidak akan dilayani oleh handler file statis.
Kesalahan ini dapat terjadi jika server tidak dikonfigurasi dengan benar untuk menggunakan .NET Framework 4 atau yang lebih baru, dan karena itu tidak mengenali kode dalam @{ } blok. Lihat deskripsi sebelumnya untuk Kesalahan HTTP 403 - Terlarang: Akses ditolak.
Kesalahan HTTP 404.7 - Tidak Ditemukan
Modul pemfilteran permintaan dikonfigurasi untuk menolak ekstensi file
Kesalahan ini dapat terjadi jika ekstensi .cshtml atau .vbhtml telah diblokir secara eksplisit di server. Gejala dari masalah ini adalah BAHWA URL berfungsi ketika URL tidak menyertakan ekstensi, tetapi URL yang menyertakan .cshtml atau .vbhtml tidak berfungsi. Solusi yang mungkin adalah mengaktifkan kembali ekstensi dalam file Web.config situs. Contoh berikut menunjukkan cara mengaktifkan ekstensi .cshtml .
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".cshtml" />
<add fileExtension=".cshtml" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
Kesalahan HTTP 404.8 - Tidak Ditemukan
Modul pemfilteran permintaan dikonfigurasi untuk menolak jalur di URL yang berisi bagian hiddenSegment.
Kesalahan ini dapat terjadi jika Anda meminta sumber daya yang dilindungi (seperti file Web.config ) atau yang ada di folder yang dilindungi (seperti App_Data atau App_Code).
Tipe halaman ini tidak dilayani (Kesalahan Server dalam Aplikasi '/')
Lihat deskripsi sebelumnya untuk Kesalahan HTTP 404.17.
Masalah dengan kode Razor
Nama 'kelas' tidak ada dalam konteks saat ini
Seringkali, alasan Anda melihat kesalahan ini adalah bahwa class mereferensikan pembantu, tetapi pembantu tidak diinstal. Misalnya, jika Anda mencoba menggunakan pembantu, tetapi jika Anda belum menginstal paket dari NuGet, Anda akan melihat kesalahan ini. Gunakan Galeri di WebMatrix untuk menemukan dan menginstal pembantu.
Jika pembantu diinstal, tetapi halaman masih tidak mengenalinya, coba tambahkan using pernyataan ke kode.
using Dalam pernyataan , referensikan namespace layanan yang menyertakan pembantu. Misalnya, pembantu dasar yang ada dalam paket ASP.NET Web Helpers ada di System.Web.Helpers namespace. Di bagian atas halaman tempat Anda ingin menggunakan pembantu, tambahkan baris ini:
@using Microsoft.Web.Helpers;
Masalah dengan Keamanan dan Keanggotaan
Jika Anda menggunakan sistem keamanan (keanggotaan) bawaan di ASP.NET Web Pages (Razor), Anda mungkin mengalami masalah berikut.
Untuk memanggil metode ini, properti "Membership.Provider" harus berupa instans "ExtendedMembershipProvider"
Kesalahan ini dapat menunjukkan bahwa tidak ada AspNetSqlMembershipProvider kelas yang dikonfigurasi. (Gejalanya adalah bahwa situs berfungsi dengan baik secara lokal tetapi melemparkan kesalahan ini ketika Anda menerbitkannya ke server penyedia hosting.) Salah satu perbaikan untuk masalah ini adalah mengaktifkan keanggotaan sederhana secara eksplisit dengan menambahkan yang berikut ini ke file Web.config situs:
<configuration>
<!-- other setting -->
<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>
<!-- other settings -->
</configuration>
Masalah dengan Mengirim Email
Masalah dalam mengirim email dapat menjadi tantangan untuk debug. Masalah awalnya adalah Anda tidak dapat tersambung ke server SMTP. Jika koneksi berhasil, ASP.NET menyerahkan pesan ke server SMTP. Namun, mungkin ada masalah dengan pesan itu sendiri yang mencegah server SMTP mengirimkannya.
Jika aplikasi Anda tidak berhasil mengirim email, cobalah hal berikut:
- Nama server SMTP seringkali seperti
smtp.provider.comatausmtp.provider.net. Namun, jika Anda menerbitkan situs Anda ke penyedia hosting, nama server SMTP pada saat itu mungkinlocalhost. Situasi ini terjadi karena setelah Anda menerbitkan dan situs Anda berjalan di server penyedia, server SMTP mungkin lokal dari perspektif aplikasi Anda. Perubahan nama server ini mungkin berarti Anda harus mengubah nama server SMTP sebagai bagian dari proses penerbitan Anda. - Nomor port biasanya 25. Namun, beberapa penyedia mengharuskan Anda menggunakan port 587 atau beberapa port lainnya. Tanyakan kepada pemilik server SMTP nomor port apa yang mereka harapkan untuk Anda gunakan.
- Pastikan Anda menggunakan kredensial yang tepat. Jika Anda telah menerbitkan situs Anda ke penyedia hosting, gunakan kredensial yang ditunjukkan secara khusus oleh penyedia adalah untuk email. Kredensial ini mungkin berbeda dari kredensial yang Anda gunakan untuk menerbitkan.
- Terkadang Anda tidak memerlukan kredensial sama sekali. Jika Anda mengirim email dengan menggunakan ISP pribadi, penyedia email Anda mungkin sudah mengetahui kredensial Anda. Setelah menerbitkan, Anda mungkin perlu menggunakan kredensial yang berbeda dari saat menguji di komputer lokal Anda.
- Jika penyedia email Anda menggunakan enkripsi, atur
WebMail.EnableSslketrue.
Jika ada kesalahan saat mengirim email, Anda mungkin melihat pesan kesalahan ASP.NET standar, yang terlihat seperti ini:
Anda juga dapat men-debug masalah dengan mengirim email dengan menggunakan try-catch blok, seperti dalam contoh berikut. Saat Anda menggunakan try-catch blokir, ASP.NET tidak menampilkan pesan kesalahan standarnya. Sebagai gantinya, Anda dapat menangkap kesalahan di catch bagian blok.
var errorMessage = "";
try {
// Initialize WebMail helper
WebMail.SmtpServer = "your-SMTP-server-name";
WebMail.SmtpPort = 25; // Or the port you've been told to use
WebMail.EnableSsl = false;
WebMail.UserName = "your-login-name";
WebMail.Password = "your-password";
WebMail.From = "your-from-address";
WebMail.Send(to: test-To-address,
subject: "Test email message",
body: "This is a debug email message"
);
}
catch (Exception ex ) {
errorMessage = ex.Message;
}
// Other code or markup here ...
<!-- In markup, add the following -->
@if(!errorMessage.IsEmpty()){
<p>@errorMessage</p>
}
Ganti nilai yang sesuai untuk your-SMTP-server-name, dan sebagainya. Beberapa pesan kesalahan yang mungkin Anda lihat dengan cara ini meliputi yang berikut ini:
Gagal mengirim surat.
-atau-
Upaya koneksi gagal karena pihak yang terhubung tidak merespons dengan benar setelah jangka waktu tertentu, atau koneksi yang dibuat gagal karena host yang terhubung gagal merespons
Kesalahan ini biasanya berarti bahwa aplikasi tidak dapat tersambung ke server SMTP. Periksa nama server dan nomor port.
Kotak surat tidak tersedia. Respons server adalah: 5.1.0 <someuser@invaliddomain> pengirim ditolak : domain pengirim tidak valid
Pesan ini dapat menunjukkan bahwa
Fromalamat tidak benar atau hilang.String yang ditentukan tidak dalam formulir yang diperlukan untuk alamat email.
Kesalahan ini mungkin menunjukkan bahwa nilai
Toproperti atauFromtidak dikenali sebagai alamat email. (ASP.NET tidak dapat memeriksa apakah alamat email valid, hanya alamat email dalam format yang benar, seperti name@domain.com.)
Catatan
Hapus markup yang menampilkan kesalahan (@errorMessage) sebelum Anda menerbitkan halaman ke situs langsung. Ini bukan ide yang baik untuk membiarkan pengguna melihat pesan kesalahan yang Anda dapatkan dari server.
Sumber Daya Tambahan
Tanya Jawab Umum ASP.NET Web Pages (Razor)
Forum WebMatrix dan halaman web ASP.NET di situs web ASP.NET