Как вернуть HttpError ConfigurationElement обратно к «Inherited» с помощью IIS 7 API

Предположим, у меня есть следующая коллекция в web.config :

<httpErrors>
</httpErrors>

Да, красиво, но пусто.

И в IIS 7 , моя страница ошибок HTTP выглядит так:

httpErrors

Прекрасно! (Я выделил 404 просто потому, что через секунду я воспользуюсь этим примером.)

Теперь я запускаю следующий код:

errorElement["statusCode"] = 404;
errorElement["subStatusCode"] = -1;
errorElement["path"] = "/404.html";
httpErrorsCollection.Add(errorElement);

Прекрасно. Теперь у меня есть, как и ожидалось, это в моем web.config :

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="/404.html" />
</httpErrors>

Как нельзя лучше. Теперь в IIS 7 мой раздел ошибок HTTP выглядит, как и ожидалось, как показано ниже: alt text

В этот момент жизнь не могла быть слаще. Теперь, в дальнейшем, я хочу программно вернуть мою ошибку 404 обратно в состояние, показанное на исходном снимке экрана. Логика подсказывает, что я должен удалить мою новую ошибку:

httpErrorsCollection.Remove(errorElement);

Но, увы, если я сделаю это, мой web.config будет выглядеть примерно так:

    <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
    </httpErrors>

И мой IIS выглядит примерно так:

alt text

Это ожидается из-за моего web.config - но как, используя ServerManager и все его полезные API IIS 7, я могу удалить httpError полностью и вернуть мой web.config обратно в:

<httpErrors>
</httpErrors>

Есть идеи?

9
задан Richard Barker 14 June 2016 в 00:34
поделиться