Как хост различает запрос MVC и запрос веб-API - PullRequest
1 голос
/ 24 октября 2019

Я новичок в asp.net mvc и web api. Я читаю книгу, в которой говорится:

ASP.NET MVC использует: System.Web.HttpRequest

, а эквивалент Web API равен System.Net.Http.HttpRequestMessage

, а ниже приведена картинка, котораяописывает запрос и поток результатов веб-API

enter image description here

Итак, мой вопрос, как среда хостинга (которая обычно будет IIS) знает, что она должнасоздать объект HttpRequestMessage для представления запроса от клиента? Я имею в виду, если приложение является приложением MVC, IIS должен создать объект HttpRequest вместо HttpRequestMessage, так как же IIS знает, какой создать?

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Я не уверен, что понимаю ваш вопрос, но это может быть то, что вы ищете:

Я имею в виду, если приложение является приложением MVC, IIS должен создать объект HttpRequest вместоHttpRequestMessage, так как же IIS знает, какой создать?

Вы должны помнить, как вы различаете обычный контроллер MVC и контроллер веб-API ...

Контроллеры WebAPI обеспечивают этоаннотация [ApiController] и должна наследоваться от ControllerBase:

[ApiController] public class PeopleController : ControllerBase { //Your API methods here }

Обычный контроллер MVC наследуется только от Controller базового класса:

public class PeopleController : Controller { //Your Action methods here... }

Те, кто уже создают конфигурацию для вашего приложения, упрощают для вас среду хостинга, чтобы знать, что происходит и когда возвращаться.

Надеюсь, вы найдете это полезным.

1 голос
/ 24 октября 2019

Как видно из фотографии, которую вы разместили, HttpRequestMessage существует только в среде "хостинга", клиент веб-браузера ничего об этом не знает.

В мире "хостинга" IISпул приложений выполняет созданный и развернутый вами код, который очень хорошо знает, какой фреймворк вы используете, поскольку ваш код также содержит перечисленные вами сборки: System.Web ... или System.Net ...

Учтите, что даже если вы продемонстрировали разделение между хостингом, контроллером и действием, все это выполняется в том же пуле приложений в IIS, который, опять же, выполняет ваш код, поэтому знает, о чем идет речь, поскольку ваши сборки IL были созданы из вашего конкретного исходного кода.

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