„Bei der Bearbeitung Ihrer Anfrage ist eine Ausnahme aufgetreten. Außerdem ist beim Ausführen der benutzerdefinierten Fehlerseite eine weitere Ausnahme aufgetreten… “

104

Ich versuche, eine MVC-Website als Azure-Webrole zu veröffentlichen.

Wenn ich es lokal ausführe, funktioniert alles einwandfrei.

Sobald ich es in Azure veröffentliche und zu einer MVC-Aktion surfe, wird folgende Fehlermeldung angezeigt:

Serverfehler in '/' Anwendung.

Laufzeit Fehler

Beschreibung: Bei der Bearbeitung Ihrer Anfrage ist eine Ausnahme aufgetreten. Darüber hinaus ist beim Ausführen der benutzerdefinierten Fehlerseite für die erste Ausnahme eine weitere Ausnahme aufgetreten. Die Anfrage wurde beendet.

Ich verstehe nicht, wie der Fehlerbehandler auf eine Ausnahme stoßen kann, da Fehler wie folgt behandelt werden:

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

Dies ist meine web.config:

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

Dies ist Error.cshtml:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

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

Was kann diese Ausnahme verursachen und warum kann ich sie nicht lokal reproduzieren?

Ilya Kogan
quelle
41
Mann, deine Fehler werfen Fehler. Das einige ernsthafte ish :)
Jack
Ich schlage vor, dass Sie die detaillierte Fehlerprotokollierung im Management Portal aktivieren und die Protokolle auf der FTP-Site überprüfen.
Jakub Konecki
Gibt es irgendetwas in Ihrem Layout, das der Schuldige sein könnte?
drch
@drch Nein, seit dem letzten Funktionieren hat sich nichts am Layout geändert.
Ilya Kogan

Antworten:

213

Setzen Sie zunächst customErrors = "Off" in der web.config und stellen Sie es erneut bereit, um eine detailliertere Fehlermeldung zu erhalten, die uns bei der Diagnose des Problems hilft. Sie können auch RDP in die Instanz einbinden und von IIS aus lokal zur Site navigieren, um die Fehler anzuzeigen.

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

Erste Vermutung: Sie haben einige Referenzen (höchstwahrscheinlich Azure SDK-Referenzen), die nicht auf Lokal kopieren = wahr gesetzt sind. Daher werden nicht alle Ihre Abhängigkeiten bereitgestellt.

Gehen Sie zuerst zum detaillierten Fehler und aktualisieren Sie Ihre Frage.

UPDATE: Eine zweite Option, die jetzt in VS2013 verfügbar ist, ist das Remote-Debuggen eines Cloud-Dienstes oder einer virtuellen Maschine .

Viperguynaz
quelle
12
Das Setzen von customErrors auf "off" zeigte schließlich einige echte Ausnahmen. Ich untersuche sie jetzt.
Ilya Kogan
1
Da dies zu einem IIS-Fehler führt, können Sie sie auch als Fallback a la benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus
Meine benutzerdefinierten Spiegel sind "Aus", aber ich sehe weiterhin "Entschuldigung, bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten." Error. Könnten Sie mir hier helfen? @ Ilya Kogan
GuiPab
1
+1, einfach weil ich durch Festlegen von customerror = off feststellen konnte, dass der Fehler verursacht wurde, weil ich eine Website-Lösung als Vorlage für eine andere Website verwendet und vergessen hatte, den Ordner bin zu löschen, dh es handelte sich um ein Duplizierungsproblem.
Paul Zahra
7

Ich habe Azure nicht verwendet, aber lokal wurde der gleiche Fehler angezeigt. Die Verwendung <customErrors mode="Off" />schien keine Auswirkung zu haben, aber das Überprüfen der Anwendungsprotokolle in der Ereignisanzeige ergab eine Warnung von ASP.NET, die alle Details enthielt, die ich zur Behebung des Problems benötigte.

SharpC
quelle
3

Wenn Sie dies zu Ihrer Transformationsdatei web.config hinzufügen, können Sie auch bestimmte Veröffentlichungsoptionen so einstellen, dass das Debuggen aktiviert oder deaktiviert ist:

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

Beim Veröffentlichen in IIS über Web Deploy habe ich nur die Optionen für die Dateiveröffentlichung überprüft und ausgeführt. Jetzt gehts! Nach dieser Bereitstellung müssen die Kontrollkästchen nicht aktiviert werden. Ich denke nicht, dass dies eine Lösung für alle sein kann, aber es ist das einzige, was ich tun musste, um mein Problem zu lösen. Viel Glück.

ASPaiva
quelle
0

Ich hatte dieses Problem nur mit redirectMode="ResponseRewrite"( redirectMode="ResponseRedirect"funktionierte gut) und keine der oben genannten Lösungen half mir, das Problem zu lösen. Nachdem ich jedoch den "Managed Pipeline Mode" des Anwendungspools des Servers von "Classic" in "Integrated" geändert hatte, wurde die benutzerdefinierte Fehlerseite wie erwartet angezeigt.

Mike Godin
quelle
-1

Sie können stattdessen Oracle.ManagedDataAccess.dll verwenden (von Oracle herunterladen), diese DLL in Ihr Projekt-Bin-Verzeichnis aufnehmen und einen Verweis auf diese DLL im Projekt hinzufügen. Im Code "Verwenden von Oracle.MangedDataAccess.Client". Stellen Sie das Projekt wie gewohnt auf dem Server bereit. Oracle Client muss nicht auf dem Server installiert werden. In web.config müssen keine Assembly-Informationen hinzugefügt werden.

user3597243
quelle
2
Wie kam Oracle auf dieses Bild?
Aamol