2013-06-24 5 views
71

Я пытаюсь опубликовать веб-сайт MVC как веб-сайт Azure.«Исключение произошло при обработке вашего запроса. Кроме того, при выполнении пользовательской страницы ошибки произошло другое исключение ...»

Когда я запускаю его локально, все работает нормально.

Но когда я опубликовать его в Azure и прибой на какое-то действие MVC, я получаю эту ошибку:

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.

Я не понимаю, как обработчик ошибок может столкнуться исключение, потому что ошибки обрабатываются в по умолчанию путь:

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

Это мой 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> 

Это Error.cshtml:

@model System.Web.Mvc.HandleErrorInfo 

@{ 
    ViewBag.Title = "Error"; 
} 

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

Что может послужить причиной этого исключения и почему я не могу воспроизвести его локально?

+31

Человек, ваши ошибки бросают ошибки. Что-то серьезное ish :) – Jack

+0

Предлагаю вам включить подробное ведение журнала ошибок на портале управления и просмотреть журналы на FTP-сайте. –

+0

Есть ли что-нибудь в вашем макете, которое может быть преступником? – drch

ответ

167

Во-первых, установите customErrors = «Off» в файле web.config и выполните повторное развертывание, чтобы получить более подробное сообщение об ошибке, которое поможет нам диагностировать проблему. Вы также можете включить RDP в экземпляр и перейти на сайт из IIS локально, чтобы просмотреть ошибки.

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

Первое предположение, хотя - у вас есть какие-то ссылки (скорее всего, Azure референции SDK), которые не установлены для копирования Local = верно. Таким образом, все ваши зависимости не развертываются.

Сначала дайте подробный запрос и обновите свой вопрос.

ОБНОВЛЕНИЕ: Второй вариант теперь доступен в VS2013: Remote Debugging a Cloud Service or Virtual Machine.

+9

Настройка customErrors для «off» наконец показала некоторые реальные исключения. Я изучаю их сейчас. –

+1

@ viperguynaz ... Спасибо за ответ! Об этом я раньше не знал. – Vikram

+1

Поскольку это приводит к ошибке IIS, вы можете настроить их также как резерв a la http://benfoster.io/blog/aspnet-mvc-custom-error-pages – drzaus

3

Я не использовал Azure, но я получил ту же ошибку локально. Использование <customErrors mode="Off" />, казалось, не имело никакого эффекта, но проверка журналов приложений в средстве просмотра событий выявила предупреждение ASP.NET, в котором были указаны все детали, необходимые для решения проблемы.

-1

Убедитесь, что вы очистили ошибки ModelState или попытаетесь их обработать.

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

Я имел эту проблему лишь с redirectMode="ResponseRewrite" (redirectMode="ResponseRedirect" работал отлично), и ни один из вышеупомянутых решений не помогло моей решить проблему. Однако, как только я изменил «Управляемый трубопроводный режим» пула сервера с «Классик» на «Интегрированный», страница пользовательских ошибок появилась, как ожидалось.