Мне нужно иметь возможность контролировать ссылки, сгенерированные моим вызовом Url.Content("~")
, чтобы иметь возможность принять Slug в начале ссылки.В основном, URL-адрес хостинга будет находиться за балансировщиком нагрузки и может находиться на корневом уровне или за более дружественным URL-адресом ...
Например: сайт настроен для работы под http://localhost:5001,, поэтомуUrl.Content("~/scripts/site.js")
сгенерирует "/scripts/site.js"
Это нормально, если браузер напрямую переходит по этому URL-адресу или даже по псевдониму, например www.mysite.com.
Но я хочу, чтобы у меня была возможность разместить сайт под www.mysite.com/Slug (думаю, сертификаты и тому подобное) ...
Теперь моя сгенерированная ссылка идетна www.mysite.com/scripts.site.js, который разрешается до 404.
В идеале, слаг может быть настроен в пользовательском IUrlHelper
или даже в пользовательском LinkGenerator
, но я не могу показатьсяввести их и перезаписать текущие.
Я пробовал:
services.AddScoped<IUrlHelper>(x =>
{
var actionContext = x.GetService<IActionContextAccessor>().ActionContext;
return new MyCustomUrlHelper(actionContext);
});
, но мне не удалось это сделать.Когда я попытался отладить, я заметил, что если вы вызываете ту же команду в контроллере, вы получаете экземпляр Microsoft.AspNetCore.Mvc.Routing.EndpointRoutingUrlHelper
.
Есть ли способ изменить это без создания пользовательского помощника (потому что в некоторых областях он будет пропущен и почти не поможет отыскать неправильно использованного помощника)