httpErrors以errorMode为条件?

时间:2013-05-07 03:04:15

标签: asp.net

如何以errorMode为条件使existingResponse成为条件?

例如,如果errorMode =“DetailedLocalOnly”,那么我希望外部消息被我的自定义定义“替换”,即友好错误页面,但我希望本地消息“passThrough”。因此,对于500错误,我在本地看到YSOD,而不是IIS 500错误页面。在外部我会看到我的友好错误页面。

这可能吗?

我当前的配置:

<httpErrors existingResponse="Replace" errorMode="DetailedLocalOnly">
    <remove statusCode="500" />
    <error statusCode="500" path="/myCustomErrorPage" responseMode="ExecuteURL" />
</httpErrors>

1 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的。您可以使用事件日志查看详细信息,也可以通过电子邮件向我们发送错误详细信息:

<healthMonitoring enabled="true" heartbeatInterval="0">
    <eventMappings>
        <clear />
        <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent, System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647" />
    </eventMappings>
    <providers>
        <clear />
        <add name="EmailProvider" type="System.Web.Management.SimpleMailWebEventProvider" to="youemail@example.com" from="webserver@example.com" buffer="true" bufferMode="Logging" />
        <add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider" />
    </providers>
    <rules>
        <clear />
        <add name="EmailRule" eventName="All Errors" provider="EmailProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" />
        <add name="EventLogRule" eventName="All Errors" provider="EventLogProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" />
    </rules>
</healthMonitoring>

如果您只想每小时或每天接收通知,请调整minInterval。当然,请确保您已为网络服务器配置了电子邮件。 E.g。

<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="C:\MailPickUpFolders\ExampleDomain" />
            <network host="localhost" port="25" />
        </smtp>
        <!--<smtp deliveryMethod="Network">
            <network host="yoursever" port="25" />
        </smtp>-->
    </mailSettings>
</system.net>