「リクエストの処理中に例外が発生しました。さらに、カスタムエラーページの実行中に別の例外が発生しました…」


104

MVC WebサイトをAzure Webロールとして公開しようとしています。

ローカルで実行すると、すべて正常に動作します。

しかし、それを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
エラーはエラーをスローします。そのいくつかの深刻なish :)
ジャック

管理ポータルで詳細なエラーログを有効にし、FTPサイトでログを確認することをお勧めします。
Jakub Konecki 2013年

レイアウトに原因があると思われるものはありますか?
Drch 2013年

@drchいいえ、最後に機能してからレイアウトに変更はありません。
Ilya Kogan 2013年

回答:


213

最初に、web.configでcustomErrors = "Off"を設定し、再デプロイして、問題の診断に役立つ詳細なエラーメッセージを取得します。また、インスタンスにRDPし、IISからローカルにサイトを参照してエラーを表示することもできます。

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

ただし、最初に推測します-Copy Local = trueに設定されていない参照(Azure SDK参照の可能性が高い)があります。そのため、すべての依存関係がデプロイされていません。

最初に詳細なエラーにアクセスし、質問を更新してください。

更新:VS2013で現在利用可能な2番目のオプションは、クラウドサービスまたは仮想マシンのリモートデバッグです。


12
customErrorsを "off"に設定すると、最終的にいくつかの実際の例外が表示されました。現在調査中です。
Ilya Kogan 2013年

1
IISエラーが発生するため、フォールバックとしてbenfoster.io/blog/aspnet-mvc-custom-error-pagesを
drzaus

私のcustomErrorsは「オフ」ですが、「申し訳ありませんが、リクエストの処理中にエラーが発生しました」と引き続き表示されます。エラー。ここで手伝ってくれませんか?@Ilya Kogan
GuiPab 2016

1
+1 customerror = offを設定したという単純な理由から、Webサイトソリューションを別のWebサイトのテンプレートとして使用していて、binフォルダーをクリアするのを忘れていたためにエラーが発生したことがわかりました。つまり、重複の問題でした。
Paul Zahra

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配置でファイル公開オプションチェックして実行しました。今ではうまくいきます!この展開後、チェックボックスをオンにする必要はありません。これは誰にとっても解決策になるとは思いませんが、それが私の問題を解決するために私がする必要があった唯一のことです。幸運を。


0

redirectMode="ResponseRewrite"(問題なく動作したredirectMode="ResponseRedirect")だけでこの問題があり、上記の解決策のどれも私の問題の解決に役立ちませんでした。ただし、サーバーのアプリケーションプールの「マネージパイプラインモード」を「クラシック」から「統合」に変更すると、期待どおりにカスタムエラーページが表示されました。


-1

代わりにOracle.ManagedDataAccess.dll(Oracleからダウンロード)を使用して、プロジェクトbin dirにそのdllを含め、プロジェクト内のそのdllへの参照を追加できます。コードでは、「Oracle.MangedDataAccess.Clientを使用する」。通常どおりサーバーにプロジェクトをデプロイします。サーバーにOracleクライアントをインストールする必要はありません。web.configにアセンブリ情報を追加する必要はありません。


2
オラクルはどのようにしてこの状況に入りますか?
Aamol
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.