"При обработке вашего запроса произошло исключение. Кроме того при выполнении пользовательской страницы ошибок произошло еще одно исключение…"


Я пытаюсь опубликовать веб-сайт MVC как веб-сайт Azure.

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

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

ошибка сервера в приложении"/".

Время Работы

описание: При обработке вашего запроса произошло исключение. Кроме того, еще одно исключение произошло во время выполнения пользовательского страница ошибки для первого исключения. Запрос был прекращен.

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

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

Это моя паутина.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>

Это ошибка.cshtml:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

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

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

4 81

4 ответа:

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

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

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

сначала перейдите к подробной ошибке и обновите свой вопрос.

обновление: второй вариант теперь доступен в VS2013 удаленная отладка облачной службы или виртуальной машины.

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

Если вы добавите это в свой веб.файл преобразования конфигурации, вы также можете установить определенные параметры публикации, чтобы отладка была включена или отключена:

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

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