Вы можете сделать это с другим html-элементом внутри одного фонового изображения.
// has your background image
// will have the gradiant style
CSS
.gradient {
background: linear-gradient( rgba(255,255,255,0.23) 0%, rgba(164,49,34, .85) 100%);
}
Вот пример Fiddle
Подумайте, как вы используете тег body
, как в настоящее время. Вы должны убедиться, что div внутри (с градиентом) расположен непосредственно над другим div. Может быть, вы должны сделать что-то вроде
.parent {
// The element with the image
position: relative;
}
.child {
// the element with the gradient
position absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
Для этого типа вещи я пошел бы с HTTP-модулем в противоположность выполнению этого с обработчиком или страницей.
Почему использование модуль вместо обработчика? HTTP-модуль называют ранее в конвейере запроса. Для подобных помещенных в черный список запросов Вы хотите отбросить запрос максимально рано и быстро. Это означает, чем ранее в запросе можно отбросить запрос, тем лучше.
Можно читать немного больше о Модулях по сравнению с Обработчиками здесь.
Возможно, Вы могли использовать
Response.Clear();
Response.End();
Править: Это могло бы быть лучше реализовано как HTTPModule вместо обработчика, но основная идея сохраняется. Дополнительную информацию см. в http://www.kowitz.net/archive/2006/03/08/ihttpmodule-vs-ihttphandler.aspx
Вы могли, вероятно, сделать это использование httphandler, тот способ, которым Вы не должны будете волноваться о проверке это в Вашем коде приложения - его обработанное, прежде чем Ваше приложение будет даже выполнено.
Код Psudo - не протестированный
class IgnoreHandler : IHttpHandler
{
#region IHttpHandler Members
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.StatusCode = 401;
context.Response.Status = "Unauthorized";
context.Response.End();
}
#endregion
}
Очевидно, если Вы хотите, чтобы это возвратило HTTP 200 (хорошо) и пустую страницу, просто удалите эти две строки, относящиеся к StatusCode и Состоянию.
И затем зарегистрируйте его в web.config
<httpHandlers>
<add verb="*"
path="*"
validate="false"
type="MyNamespace.IgnoreHandler, MyAssembly" />
</httpHandlers>
Моя первая мысль была что предложенный John. Наиболее идеальное решение состояло бы в том, чтобы добавить, что они дюйм/с к списку заблокированного дюйм/с в Вашем брандмауэре, если у Вас есть доступ к нему, тот путь Ваше приложение, не должны делать никакой обработки вообще.
Я предложил бы, чтобы лучшее решение не состояло в том, чтобы дать определенное "никакой ответ", но дать более обескураживающее стандартное сообщение ошибки HTTP. Каждый раз, когда я пытаюсь обескуражить неавторизованных пользователей, я выпускаю страницу/URL, не найденную сообщением следующим образом:
throw new HttpException(404, "File not found - " + Request.AppRelativeCurrentExecutionFilePath);
Я думаю, что это очень эффективно при убеждении человека в другом конце сдаться и уйти.
Можно хотеть взглянуть на этот http://www.angrypets.com/tools/rdos/, который делает подобную вещь к тому, что Вы говорите о по подобным причинам, и реализован как модуль.
Другой раздражающий, но простой способ сделать это состоял бы в том, чтобы Спать запрос на обескураживающее количество времени прежде, чем закрыть его.
AFAIK там не является никаким путем к прямому отбрасыванию запрос без ответа. Можно сохранить запрос, вращающийся в ASP.NET с любым потоком, спя техника, которую Вы любите, но Вы не делаете жизнь лучше для Вашего сервера тем путем.
Лучший способ, которым я знаю о достигнуть того, что Вы хотите, имеет менеджера по трафику как ZXTM близко запрос, прежде чем это доберется до веб-сервера вообще.