Создается ли экземпляр класса контроллера и при каждом запросе в ASP. NET Framework вызывается соответствующий метод экземпляра? - PullRequest
2 голосов
/ 04 марта 2020

Являются ли тип веб-приложения и контроллер одинаковыми в ASP. NET Framework?

В CLR через C# присутствует следующий отрывок:

Когда будущие клиенты делают запросы к уже работающему веб-приложению , ASP. NET не создает новый домен приложения; вместо этого он использует существующий домен приложений, создает новый экземпляр типа веб-приложения и начинает вызывать методы. Методы уже будут JIT-скомпилированы в собственный код, поэтому производительность обработки всех последующих клиентских запросов превосходна.

Означает ли это, что экземпляр класса контроллера создан и соответствующий метод экземпляра вызывается при каждом запросе в ASP. NET Framework?

Например, если у меня есть следующее контроллер:

[RoutePrefix("prefix")]
public class FooController : ApiController
{
    [HttpGet]
    [Route("something/{id}")]
    public string GetSomething(int id)
    {
        return "something";
    }
}

Означает ли это, что каждый раз, когда я запрашиваю prefix/something/47 (любое число здесь вместо 47 и хоста до того, как должен присутствовать URL), создается новый экземпляр FooController а метод FooController.GetSomething вызывается?

1 Ответ

2 голосов
/ 04 марта 2020

Да, новый экземпляр контроллера используется для каждого запроса. Как указано в этом ответе на старый вопрос, новые экземпляры используются, чтобы избежать потенциальных проблем состояния при обработке нескольких запросов.

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