Bryan P Clauss Ответов: 1

Передайте входящий httprequest другому методу (ASP.NET ядро 3.1)


У меня есть метод, которому нужен входящий объект HttpRequest. Возможно ли, чтобы другой метод передал свой объект HttpRequest этому методу?

Пример:
public async Task<IActionResult> Index()
{
  // Can I do something like this???
  return validateRequest(Request);
}

public async Task<IActionResult> validateRequest()
{
   var myRequest = new myRequest(Request);
   // Do things to validate the request...

   return View("validatedRequest");
}


Таким образом, попадание либо www.mySite.com и еще www.mySite.com/validateRequest будут работать оба.

Что я уже пробовал:

Я искал в интернете и пока не нашел никаких образцов.

j snooze

Это может помочь вам с тем, что вы ищете.

https://stackoverflow.com/questions/34298318/how-to-access-the-request-object-in-an-mvc-6-controller

j snooze

Я понимаю, что это mvc для .net framework, но это говорит о том, что httpcontext.request все еще остается тем же самым для .net core...
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-3.1

1 Ответов

Рейтинг:
4

Richard Deeming

Если метод находится на том же контроллере, он уже будет иметь доступ к тому же запросу. Вам не нужно ничего передавать другому методу.

Так как вы используете async метод, вам нужно будет await другой метод:

public async Task<IActionResult> Index()
{
    return await validateRequest();
}

public async Task<IActionResult> validateRequest()
{
     var myRequest = new myRequest(Request);
     // Do things to validate the request...
     return View("validatedRequest");
}
Или, если return await ... утверждение является единственным await оператор в вызывающем методе можно удалить async модификатор from и return другого метода Task непосредственно:
public Task<IActionResult> Index()
{
    return validateRequest();
}