"İsteğiniz işlenirken bir istisna oluştu. Ayrıca, özel hata sayfası yürütülürken başka bir istisna oluştu… ”


104

Bir MVC web sitesini Azure webrole olarak yayınlamaya çalışıyorum.

Yerel olarak çalıştırdığımda her şey yolunda gidiyor.

Ancak bunu Azure'da yayınladığımda ve bazı MVC eylemlerine göz attığımda şu hatayı alıyorum:

'/' Uygulamasında Sunucu Hatası

Çalışma hatası

Açıklama: İsteğiniz işlenirken bir istisna oluştu. Ek olarak, ilk istisna için özel hata sayfası yürütülürken başka bir istisna oluştu. Talep sonlandırıldı.

Hata işleyicisinin bir istisnayla nasıl karşılaşabileceğini anlamıyorum, çünkü hatalar varsayılan şekilde ele alınır:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

Bu benim web.config'im:

<?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>

Bu Error.cshtml'dir:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2>
    Sorry, an error occurred while processing your request.
</h2>

Bu istisnaya ne sebep olabilir ve neden yerel olarak yeniden üretemiyorum?


41
Dostum, senin hataların hata veriyor. Bu ciddi bir şey :)
Jack

Yönetim Portalında ayrıntılı hata günlüğünü etkinleştirmenizi ve FTP sitesindeki günlükleri gözden geçirmenizi öneririm.
Jakub Konecki

Düzeninizde suçlu olabilecek herhangi bir şey var mı?
drch

@drch Hayır, son çalıştığından bu yana düzende hiçbir şey değişmedi.
Ilya Kogan

Yanıtlar:


214

Öncelikle, web.config dosyasında customErrors = "Off" ayarını yapın ve sorunu teşhis etmemize yardımcı olacak daha ayrıntılı bir hata mesajı almak için yeniden konuşlandırın. Ayrıca, örneğe RDP uygulayabilir ve hataları görüntülemek için yerel olarak IIS'den siteye göz atabilirsiniz.

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

Yine de ilk tahmin - Yerel Kopyala = true olarak ayarlanmayan bazı referanslarınız (büyük olasılıkla Azure SDK başvuruları) var. Yani, tüm bağımlılıklarınız devreye girmiyor.

Önce ayrıntılı hataya gidin ve sorunuzu güncelleyin.

GÜNCELLEME: VS2013'te artık mevcut olan ikinci bir seçenek, Bulut Hizmeti veya Sanal Makinede Uzaktan Hata Ayıklama'dır .


12
CustomErrors'ı "off" olarak ayarlamak nihayet bazı gerçek istisnaları gösterdi. Şimdi onları araştırıyorum.
Ilya Kogan

1
Bir IIS hatasıyla sonuçlandığından, bunları bir geri dönüş olarak da özelleştirebilirsiniz a la benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus

Özel hatalarım "Kapalı", ancak "Maalesef isteğiniz işlenirken bir hata oluştu" mesajını görmeye devam ediyorum. hata. Bana yardım edebilir misin @Ilya Kogan
GuiPab

1
+1, çünkü customerror = off ayarı, hatanın başka bir web sitesi için şablon olarak bir web sitesi çözümü kullandığımdan ve bin klasörünü temizlemeyi unuttuğumdan kaynaklandığını görmeme izin verdiğinden, yani bir kopya sorunuydu.
Paul Zahra

7

Azure kullanmıyordum ama yerel olarak aynı hatayı aldım. Kullanmanın bir <customErrors mode="Off" />etkisi yok gibi görünüyordu, ancak Olay Görüntüleyicisi'nde Uygulama günlüklerini kontrol etmek, sorunu çözmek için ihtiyacım olan tüm ayrıntıları içeren ASP.NET'ten bir uyarı ortaya çıkardı.


3

Bunu web.config dönüştürme dosyanıza eklerseniz, belirli yayınlama seçeneklerini hata ayıklamayı etkinleştirecek veya devre dışı bırakacak şekilde de ayarlayabilirsiniz:

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

1

IIS'ye yayınlarken, Web Dağıtımı ile Dosya Yayınlama Seçeneklerini kontrol ettim ve çalıştırdım. Şimdi çalışıyor! Bundan sonra, onay kutularının işaretlenmesine gerek yoktur. Bunun herkes için bir çözüm olabileceğini düşünmüyorum, ancak sorunumu çözmek için yapmam gereken tek şey bu. İyi şanslar.


0

Bu sorunu yalnızca redirectMode="ResponseRewrite"(iyi redirectMode="ResponseRedirect"çalıştı) ile yaşadım ve yukarıdaki çözümlerden hiçbiri sorunu çözmeme yardımcı olmadı . Ancak, sunucunun uygulama havuzunun "Yönetilen Ardışık Düzeni Modu" nu "Klasik" ten "Entegre" ye değiştirdiğimde, beklendiği gibi özel hata sayfası belirdi.


-2

Bunun yerine Oracle.ManagedDataAccess.dll'yi kullanabilirsiniz (Oracle'dan indirin), o dll'yi proje bin dizinine dahil edin, projedeki o dll'ye referans ekleyin. Kodda, "Oracle.MangedDataAccess.Client kullanarak". Projeyi her zamanki gibi sunucuya dağıtın. Sunucuya Oracle Client kurmanıza gerek yok. Web.config dosyasında montaj bilgisi eklemeye gerek yoktur.


3
Oracle bu resme nasıl girdi?
Aamol
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.