2013-06-24 23 views
71

Próbuję opublikować witrynę MVC jako webrole platformy Azure."Wystąpił wyjątek podczas przetwarzania żądania. Ponadto wystąpił inny wyjątek podczas wykonywania niestandardowej strony błędu ..."

Po uruchomieniu go na miejscu wszystko działa poprawnie.

Ale kiedyś opublikować go na Azure i surfowania do jakiegoś działania MVC, otrzymuję ten błąd:

Server Error in '/' Application.

Runtime Error

Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated.

Nie rozumiem, w jaki sposób obsługi błędów może wystąpić wyjątek, ponieważ błędy są obsługiwane w domyślnym sposobem:

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

to jest mój plik 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> 

to Error.cshtml:

@model System.Web.Mvc.HandleErrorInfo 

@{ 
    ViewBag.Title = "Error"; 
} 

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

Co może powodować ten wyjątek i dlaczego nie mogę go odtworzyć lokalnie?

+31

Człowieku, twoje błędy powodują błędy. To poważny problem :) – Jack

+0

Proponuję włączyć szczegółowe rejestrowanie błędów w portalu zarządzania i przejrzeć dzienniki na stronie FTP. –

+0

Czy jest jakiś element układu, który może być przyczyną? – drch

Odpowiedz

167

Po pierwsze, ustaw customErrors = "Off" w web.config i ponownie wdróż, aby uzyskać bardziej szczegółowy komunikat o błędzie, który pomoże nam zdiagnozować problem. Można również RDP do instancji i przeglądać lokalnie z IIS lokalnie, aby wyświetlić błędy.

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

Po pierwsze - niektóre odniesienia (najprawdopodobniej odwołania do Azure SDK) nie są ustawione na Copy Local = true. Tak więc wszystkie twoje zależności nie są wdrażane.

Najpierw sprawdź szczegółowy błąd i zaktualizuj swoje pytanie.

AKTUALIZACJA: Drugą opcją dostępną teraz w VS2013 jest Remote Debugging a Cloud Service or Virtual Machine.

+9

Ustawienie customErrors na "off" w końcu pokazało kilka prawdziwych wyjątków. Zbieram je teraz. –

+1

@viperguynaz ... Dzięki za odpowiedź! Nie wiedziałem o tym wcześniej. – Vikram

+1

Ponieważ powoduje to błąd IIS, możesz je również dostosować jako rezerwowy http://benfoster.io/blog/aspnet-mvc-custom-error-pages – drzaus

3

Nie korzystałem z platformy Azure, ale wystąpił ten sam błąd lokalnie. Wydaje się, że użycie <customErrors mode="Off" /> nie przyniosło żadnego efektu, ale sprawdzenie dzienników aplikacji w Podglądzie zdarzeń ujawniło ostrzeżenie z programu ASP.NET, które zawierało wszystkie szczegóły potrzebne do rozwiązania problemu.

-1

Upewnij się, że wyczyściłeś błędy ModelState lub nadal próbujesz je przetworzyć.

foreach (var modelValue in ModelState.Values) 
       { 
        modelValue.Errors.Clear(); 
       } 
0

miałem ten problem tylko z redirectMode="ResponseRewrite" (redirectMode="ResponseRedirect" działało w porządku) i żadne z powyższych rozwiązań nie pomogło moje rozwiązać problem. Jednak po zmianie "trybu zarządzanego potoku" na serwerze z "Klasycznego" na "Zintegrowany" strona błędu niestandardowego pojawiła się zgodnie z oczekiwaniami.

Powiązane problemy