2011-10-25 20 views
0

MVC 3でカスタムエラーページを使用しようとしましたが、これはweb.configでカスタムエラーを指定しています。MVC 3のカスタムエラーが動作しない

私は1つのアクションメソッドでのErrorControllerを定義しているアプリケーション内のすべてのエラーのために使用されているインデックス()

マイweb.configファイルは、次のようになります。

<configuration> 
<configSections> 
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
</sectionGroup> 
<sectionGroup name="elmah"> 
    <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/> 
    <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/> 
    <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/> 
    <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/> 
</sectionGroup> 
</configSections> 

<system.web.webPages.razor> 
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.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"/> 
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
</httpHandlers> 
<httpModules> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> 
</httpModules> 
<customErrors defaultRedirect="/Error/Index" mode="On"> 
    <error statusCode="404" redirect="/Error/Index"/> 
</customErrors> 
<!-- 
    Enabling request validation in view pages would cause validation to occur 
    after the input has already been processed by the controller. By default 
    MVC performs request validation before a controller processes the input. 
    To change this behavior apply the ValidateInputAttribute to a 
    controller or action. 
--> 
<pages 
    validateRequest="false" 
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <controls> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
    </controls> 
</pages> 
</system.web> 
<system.net> 
<mailSettings> 
    <smtp deliveryMethod="Network"> 
    <network host="smtp.gmail.com" port="587" defaultCredentials="false" userName="myUsername" enableSsl="true" password="myPassword"/> 
    </smtp> 
</mailSettings> 
</system.net> 
<elmah> 
<errorMail from="[email protected]" to="[email protected]" subject="WDMS Error" async="true" smtpPort="587" useSsl="true"/> 
</elmah> 
<system.webServer> 
<validation validateIntegratedModeConfiguration="false" /> 

<handlers> 
    <remove name="BlockViewHandler"/> 
    <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
</handlers> 

<modules runAllManagedModulesForAllRequests="true"> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
</modules> 
</system.webServer> 
</configuration> 

何らかの理由で、私のアプリケーションでエラーが発生したときに私の/エラー/インデックスアクションを打つことはありません。

これには間違いがありますか? global.asax Application_Error()に1つの一般的なエラーメッセージアクションメソッドを定義する方法はありますか?

+0

エラーをどこか別の場所で処理していますか?たとえば、コントローラまたはアクションが[HandleError]で装飾されている場合、OnExceptionのコードが例外を処理している可能性があります。 –

答えて

関連する問題