“Terjadi pengecualian saat memproses permintaan Anda. Selain itu, pengecualian lain terjadi saat menjalankan halaman kesalahan kustom ... "

104

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?

Ilya Kogan
sumber
41
Astaga, kesalahan Anda membuat kesalahan. Itu serius :)
Jack
Saya sarankan Anda mengaktifkan pencatatan kesalahan mendetail di Portal Manajemen dan meninjau log di situs FTP.
Jakub Konecki
Apakah ada sesuatu dalam tata letak Anda yang mungkin menjadi penyebabnya?
drch
@drch Tidak, tidak ada yang berubah dalam tata letak sejak terakhir kali berfungsi.
Ilya Kogan

Jawaban:

214

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.

<system.web>
      <customErrors mode="Off" />

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 .

viperguynaz
sumber
12
Menyetel customErrors ke "off" akhirnya menunjukkan beberapa pengecualian nyata. Saya sedang menyelidiki mereka sekarang.
Ilya Kogan
1
Karena ini menghasilkan kesalahan IIS, Anda dapat menyesuaikannya juga sebagai fallback ala benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus
CustomErrors saya "Tidak Aktif", tetapi saya terus melihat pesan "Maaf, terjadi kesalahan saat memproses permintaan Anda." kesalahan. Bisakah Anda membantu saya di sini? @Ilya Kogan
Guiabab
1
+1 hanya karena pengaturan customerror = off memungkinkan saya untuk melihat bahwa kesalahan tersebut disebabkan karena saya telah menggunakan solusi situs web sebagai template untuk situs web lain dan lupa untuk membersihkan folder bin, yaitu masalah duplikasi.
Paul Zahra
7

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.

SharpC
sumber
3

Jika Anda menambahkan ini ke file transformasi web.config, Anda juga dapat menyetel opsi publikasi tertentu agar debugging diaktifkan atau dinonaktifkan:

<system.web>
    <customErrors mode="Off" defaultRedirect="~/Error.aspx" xdt:Transform="Replace"/>
</system.web>
Conner
sumber
1

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.

ASPaiva
sumber
0

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.

Mike Godin
sumber
-1

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.

pengguna3597243
sumber
2
Bagaimana Oracle bisa menjadi gambaran ini?
Aamol