Если вы не используете перегрузку GetUriByAction
, для которой требуется HttpContext
, то вам необходимо предоставить все необходимые аргументы других
public static string GetUriByAction(
this LinkGenerator generator,
string action,
string controller,
object values,
string scheme,
HostString host,
PathString pathBase = default,
FragmentString fragment = default,
LinkOptions options = default)
Источник
Который в вашем примере будет scheme
и host
.
В качестве альтернативы вы также можете рассмотреть возможность введения IHttpContextAccessor
, чтобы у вас был доступ к HttpContext
за пределами контроллера, и вы сможете совершать вызов так же, как вы это делали, когда вызывались из контроллера.
var url = _linkGenerator.GetUriByAction(_accessor.HttpContext,
action: "GetContentByFileId",
values: new { FileId = 1 }
);