2013-05-07 2 views
1

Как я могу сделать existingResponse условным на errorMode?httpErrors условно на errorMode?

Например, если errorMode = "ПодробноLocalOnly", то я хочу, чтобы внешние сообщения были «заменены» моими пользовательскими определениями, то есть дружественной страницей ошибки, но я хочу, чтобы локальные сообщения были «переданы через». Таким образом, для ошибки 500 я вижу YSOD локально, а не страницу ошибки IIS 500. Внешне я видел бы мою страницу Friendly error.

Возможно ли это?

моя текущая конфигурация:

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

ответ

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="[email protected]" from="[email protected]" 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, если вы только хотите получать уведомления, например, каждый час или каждый день. И, конечно же, убедитесь, что вы настроили свой адрес электронной почты для своего веб-сервера. Например.

<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> 
Смежные вопросы