Saya mencoba menerbitkan situs web MVC sebagai peran web Azure.
Ketika saya menjalankannya secara lokal, semuanya bekerja dengan baik.
Tetapi begitu saya mempublikasikannya ke Azure dan menjelajahi beberapa tindakan MVC, saya mendapatkan kesalahan ini:
Kesalahan Server di Aplikasi '/'.
Runtime Error
Deskripsi: Terjadi pengecualian saat memproses permintaan Anda. Selain itu, pengecualian lain terjadi saat menjalankan halaman kesalahan kustom untuk pengecualian pertama. Permintaan telah dihentikan.
Saya tidak mengerti bagaimana penangan kesalahan dapat menemukan pengecualian, karena kesalahan ditangani dengan cara default:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
Ini adalah web.config saya:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
Ini adalah Error.cshtml:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
}
<h2>
Sorry, an error occurred while processing your request.
</h2>
Apa yang dapat menyebabkan pengecualian ini, dan mengapa saya tidak dapat mereproduksinya secara lokal?
sumber
Jawaban:
Pertama, setel customErrors = "Off" di web.config dan terapkan ulang untuk mendapatkan pesan kesalahan yang lebih detail yang akan membantu kami mendiagnosis masalah. Anda juga bisa RDP ke dalam contoh dan menelusuri situs dari IIS secara lokal untuk melihat kesalahan.
Tebakan pertama - Anda memiliki beberapa referensi (kemungkinan besar referensi Azure SDK) yang tidak disetel ke Salin Lokal = true. Jadi, semua dependensi Anda tidak diterapkan.
Lihat kesalahan mendetail terlebih dahulu dan perbarui pertanyaan Anda.
PEMBARUAN: Opsi kedua yang sekarang tersedia di VS2013 adalah Debugging Jarak Jauh Layanan Cloud atau Mesin Virtual .
sumber
Saya tidak menggunakan Azure, tetapi saya mendapatkan kesalahan yang sama secara lokal. Menggunakan
<customErrors mode="Off" />
tampaknya tidak berpengaruh, tetapi memeriksa log Aplikasi di Peraga Peristiwa mengungkapkan peringatan dari ASP.NET yang berisi semua detail yang saya butuhkan untuk menyelesaikan masalah.sumber
Jika Anda menambahkan ini ke file transformasi web.config, Anda juga dapat menyetel opsi publikasi tertentu agar debugging diaktifkan atau dinonaktifkan:
sumber
Ketika penerbitan ke IIS, oleh Web Deploy, saya hanya memeriksa yang Berkas Publish Pilihan dan dieksekusi. Sekarang berhasil! Setelah penerapan ini, kotak centang tidak perlu dicentang. Saya tidak berpikir ini bisa menjadi solusi untuk semua orang, tetapi itu adalah satu-satunya hal yang perlu saya lakukan untuk menyelesaikan masalah saya. Semoga berhasil.
sumber
Saya memiliki masalah ini hanya dengan
redirectMode="ResponseRewrite"
(redirectMode="ResponseRedirect"
berfungsi dengan baik) dan tidak ada solusi di atas yang membantu saya menyelesaikan masalah. Namun, setelah saya mengubah "Mode Saluran Saluran yang Dikelola" di kumpulan aplikasi server dari "Klasik" menjadi "Terintegrasi", halaman kesalahan kustom muncul seperti yang diharapkan.sumber
Anda dapat menggunakan Oracle.ManagedDataAccess.dll sebagai gantinya (unduh dari Oracle), sertakan dll itu di direktori bin proyek Anda, tambahkan referensi ke dll itu dalam proyek. Dalam kode, "menggunakan Oracle.MangedDataAccess.Client". Terapkan proyek ke server seperti biasa. Tidak perlu menginstal Oracle Client di server. Tidak perlu menambahkan info perakitan di web.config.
sumber