"Під час обробки вашого запиту сталася виняток. Крім того, ще один виняток стався під час виконання спеціальної сторінки помилок… "


104

Я намагаюся опублікувати веб-сайт MVC як веб-ролик Azure.

Коли я запускаю його локально, все працює добре.

Але як тільки я публікую його в Azure і переходжу до якоїсь дії MVC, я отримую цю помилку:

Помилка серверу в програмі '/'

Помилка під час виконання

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

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

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>

Що може спричинити цей виняток і чому я не можу його відтворити локально?


41
Людина, твої помилки кидають помилки. Щось серйозне іш :)
Джек

Я пропоную вам включити детальний журнал помилок на порталі управління та переглянути журнали на FTP-сайті.
Якуб Конецький

Чи є у вашому макеті щось, що може бути винуватцем?
drch

@drch Ні, нічого не змінилося в макеті з моменту останньої роботи.
Ілля Коган

Відповіді:


213

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

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

Спочатку здогадайтесь - у вас є деякі посилання (найімовірніше, посилання Azure SDK), які не встановлено як Copy Local = true. Отже, всі ваші залежності не розгортаються.

Спершу перейдіть до детальної помилки та оновіть своє запитання.

ОНОВЛЕННЯ: Другий варіант, який зараз доступний у VS2013, - це віддалена налагодження хмарної служби або віртуальної машини .


12
Налаштування customErrors "off" нарешті показало деякі реальні винятки. Я зараз їх розслідую.
Ілля Коган

1
Оскільки це призводить до помилки IIS, ви також можете їх налаштувати як резервну копію a la benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus

Мої користувацькі помилки "Вимкнено", але я продовжую бачити "Вибачте, сталася помилка під час обробки вашого запиту". помилка. Чи можете ви мені тут допомогти? @Ilya Kogan
GuiPab

1
+1 просто тому, що встановлення customerror = off дозволило мені побачити, що помилка викликана тим, що я використовував рішення веб-сайту як шаблон для іншого веб-сайту і забув очистити папку bin, тобто це проблема дублювання.
Пол Захра

7

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


3

Якщо ви додасте це до файлу перетворення web.config, ви також можете встановити певні параметри публікації, щоб увімкнути або відключити налагодження:

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

1

Під час публікації в IIS, за допомогою Web Deploy, я просто перевірив параметри публікації файлів і виконав. Тепер це працює! Після цього розгортання прапорці не потрібно перевіряти. Я не думаю, що це може бути рішенням для всіх, але це єдине, що мені потрібно було зробити, щоб вирішити свою проблему. Удачі.


0

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


-1

Ви можете скористатися Oracle.ManagedDataAccess.dll замість цього (завантажити з Oracle), включити цей dll у ваш проект din dir, додати посилання на цей dll у проекті. У коді "використання Oracle.MangedDataAccess.Client". Розгорніть проект на сервер як завжди. Не потрібно встановлювати Oracle Client на сервер. Не потрібно додавати інформацію про збірку в web.config.


2
Як Oracle потрапив у цю картину?
Аамол
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.