2013-06-24 35 views
71

私はAzure webroleとしてMVC Webサイトを公開しようとしています。"リクエストの処理中に例外が発生しました。さらに、カスタムエラーページの実行中に別の例外が発生しました..."

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

しかし、私はいくつかの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

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

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

最初に推測しますが、Copy Local = trueに設定されていない参照(おそらくAzure SDK参照)があります。したがって、依存関係はすべて展開されていません。

詳細エラーを最初に取得して、質問を更新してください。

アップデート:VS2013で現在利用可能な2番目のオプションはRemote Debugging a Cloud Service or Virtual Machineです。

+9

customErrorsを "off"に設定すると、最終的に実際の例外がいくつか示されました。私は今それらを調べている。 –

+1

@viperguynaz ...答えてくれてありがとう!私は以前これを知らなかった。 – Vikram

+1

それはIISのエラーが生じていますので、Aフォールバックア・ラ・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"がうまく働いていた)と上記の解決策のいずれも問題が私の決意を助けていないと、この問題を抱えていました。しかし、サーバーのアプリケーションプールの "Managed Pipeline Mode"を "Classic"から "Integrated"に変更すると、カスタムエラーページが期待どおりに表示されました。