Я хотел бы получить доступ к веб-пути root из Blazor.Server.Startup.ConfigureServices
в решении, размещенном на Blazor.
Я ввел IWebHostEnvironment
в конструктор Startup
и сохранил его как свойство с именем «WebHostEnvironment». Проблема в том, что в ConfigureServices WebHostEnvironment.WebRootPath
всегда имеет значение null.
Я уже подтвердил, что:
wwwroot
папка существует в моем проекте Blazor.Client. app.UseStaticFiles();
был вызван в Startup.Configure
(не уверен, что это необходимо, но это одно из немногих рекомендуемых решений, которые я нашел).
Это похоже на общая проблема (возможно, WebRootPath заполняется только при определенных условиях - например, после публикации / развертывания моего приложения?), однако я нигде не смог найти четкого, окончательного ответа, и я не уверен, что я могу сделать, чтобы получить веб-путь root в ConfigureServices
.
Вариант использования
Хотя это не имеет прямого отношения к вопросу, я пытаюсь получить путь к моей конечной точке токена, чтобы я мог настройте свойство TokenUrl
в новом OpenApiAuthFlow
для службы Swashbuckle AddSwaggerGen
. Я бы предпочел не указывать URL-адрес localhost, поскольку в конечном итоге он будет развернут на рабочем веб-сайте. Полагаю, я мог бы сохранить его в настройках приложения, если бы это было необходимо, но я надеялся, что мне не придется поддерживать там путь.
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new OpenApiInfo {Title = "Protected API", Version = "v1"});
options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.OAuth2,
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri("https://localhost:5000/connect/authorize"),
TokenUrl = new Uri("https://localhost:5000/connect/token"),
Scopes = new Dictionary<string, string>
{
{"api1", "Demo API - full access"}
}
}
}
});
});