#.net #azure #iis #isapi #.net-4.7
#.net #azure #iis #isapi #.net-4.7
Вопрос:
Есть ли способ отвечать на запросы, предпочтительно на основе URL, и возвращать ответ перед запуском самого приложения? Возможно, конфигурация сервера web.config (IIS) или статическая страница, похожая на app_offline.
По сути, это мой сценарий: если я получаю запрос с определенным путем (например, /hello ), я хочу сразу же вернуть ответ и не вводить приложение.
Возможно ли это? Есть ли способ установить статическую страницу, которая всегда обслуживается до запуска .NET (auth, filters, промежуточное программное обеспечение и т. Д.), Например, app_offline?
Я попытался просмотреть фильтры ISAPI, но это кажется слишком сложным для того, что я хочу сделать, особенно учитывая, что наши приложения развернуты в Azure.
Есть ли какая-либо функция Azure, которую мы можем использовать?
Комментарии:
1. вы можете использовать статическую маршрутизацию в iis.
2. learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/…
3. Перезапись URL-адреса — один из вариантов, и вы также можете написать собственное расширение IIS на C #, learn.microsoft.com/en-us/iis/develop/runtime-extensibility /…
Ответ №1:
Я предлагаю вам попробовать использовать httphandler для достижения ваших требований. Вы можете создать пользовательский http-обработчик, который будет запущен перед веб-формой.
Подробнее о том, как создать пользовательский httphanlder, вы можете ознакомиться с приведенными ниже шагами:
1. Создайте пользовательский класс:
public class CustomHanlder : IHttpHandler
{
public bool IsReusable => true;
public void ProcessRequest(HttpContext context)
{
context.Response.Write("CustomHttpHandler");
}
}
2. Добавьте приведенные ниже настройки в web.config
<system.webServer>
<handlers>
<add name="CustomHandler" path="hello" type="[YouapplicationNameSpace].CustomHanlder" verb="*"/>
</handlers>
</system.webServer>
Результат:
Комментарии:
1. Спасибо, я все же выбрал правила перезаписи. Не уверен, что запускается первым, обработчики или перезапись, но перезапись определенно запускалась перед приложением, поэтому этого достаточно.