Вы можете получить список зарегистрированных обработчиков HTTP и проверить, обрабатываются ли они системным классом.Предполагая, что вы не называете свои собственные классы в пространстве имен System.*
, это вполне надежно:
using System.Configuration;
using System.Web.Configuration;
Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
HttpHandlersSection handlers = (HttpHandlersSection) config
.GetSection("system.web/httpHandlers");
List<string> forbiddenList = new List<string>();
// next part untested:
foreach(HttpHandlerAction handler in handlers.Handlers)
{
if(handler.Type.StartsWith("System."))
{
forbiddenList.Add(handler.Path);
}
}
Кроме того, вы можете отменить поиск и перечислить все существующие обработчики, кромев вашем собственном (или текущем) домене, возможно, предусмотрены некоторые исключения (т. е. если вы хотите переопределить существующий обработчик изображения).Но что бы вы ни выбрали, это дает вам полный доступ к тому, что уже зарегистрировано.
Примечание: обычно проще сделать обратное.Теперь вы, кажется, хотите занести в черный список пару путей, но вместо этого, если вы можете создать белый список (то есть составить список тех расширений, которые вы делаете хотите обработать), вы можете сделать это самостоятельно намного проще..