Как IIS знает, как запустить .NET веб-приложение - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь понять, как IIS знает, как запустить мое веб-приложение ASP.Net. Насколько я понимаю, при создании веб-приложения мы создаем Web.Config, который определяет, как IIS будет запускать его процесс

Итак, у нас есть веб-конфигурация

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="LogRequests" type="BDBPayroll.Apps.API.Web.Shared.HttpModules.LogRequestsHttpModule, BDBPayroll.Apps.API.Web.Shared" />
    <add name="MiniProfiler" type="BDBPayroll.Apps.API.Web.Shared.HttpModules.MiniProfilerHttpModule, BDBPayroll.Apps.API.Web.Shared" />
  </modules>
  <handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <remove name="TRACEVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

и глобальный Asax:

public class WebApiApplication : WebApiHttpApplication<WebModule>
{
    protected override void Configure(HttpConfiguration config)
    {
        config.Filters.Add(new Filters.ContextResolverFilter());
        config.Filters.Add(new ValidateModelAttribute());
        config.Filters.Add(new PaginationFilter());

        GlobalContext<JsonFormatterRule>.Instance.SetDefaultJsonFormatter(config);


    }
    //...
}

Поскольку IIS может запускать несколько приложений, например php, .net и т. Д. Как IIS знает извеб-конфигурация Для запуска Global Asax.

Я предполагаю, что он ищет тип приложения в веб-конфигурации, а затем ищет WebApiHttpApplication. У кого-нибудь есть какая-либо информация об этом процессе?

1 Ответ

1 голос
/ 24 мая 2019

Поскольку IIS может запускать несколько приложений, например php, .net и т. Д., Как IIS знает из веб-конфигурации запуск Global Asax.

Я предполагаю, что он ищет тип приложения извеб-конфигурации, а затем ищет WebApiHttpApplication. У кого-нибудь есть больше информации об этом процессе?

Насколько я знаю, если использовать, отправьте запрос в IIS.

После обработки http-запроса http.sys IIS переместит этот запрос в w3wp.exe для его обработки.

Поскольку IIS может обрабатывать только htm или html статическую страницу, IIS будет использовать ISAPI для обработки страницы, котораяIIS не может обработать.

ISAPI является своего рода обработчиком расширений для обработки различных типов страниц, таких как php, aspx, cshtml или что-то еще.

Вы можете найти его в обработчике консоли диспетчера IISзначок сопоставления.

Изображение показано ниже:

enter image description here

enter image description here

IIS отправит запрос на правильный http hanlder в соответствиина его расширение.Модуль обработки (например, asp.net isapi) загрузит CLR и веб-приложение (включая globalasax) для обработки запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...