我想从Blazor托管解决方案的Blazor.Server.Startup.ConfigureServices
内部访问Web根路径。
我已将IWebHostEnvironment
注入到Startup
构造函数中,并将其保存为名为“ WebHostEnvironment”的属性。问题在于,在ConfigureServices中,WebHostEnvironment.WebRootPath
始终为空。
我已经确认:
wwwroot
文件夹存在于我的Blazor.Client项目中。app.UseStaticFiles();
在Startup.Configure
中被调用(不确定是否有必要,但这是我找到的少数推荐解决方案之一)。这似乎是一个常见问题(也许WebRootPath仅在某些条件下填充-例如在发布/部署我的应用程序之后?),但是我一直无法在任何地方找到明确的明确答案,不知道该怎么做才能在ConfigureServices
中获得Web根路径。
虽然与问题没有直接关系,但我正在尝试获取令牌端点的路径,以便可以在Swashbuckle的TokenUrl
的新OpenApiAuthFlow
中配置AddSwaggerGen
属性}服务。我希望不必指定localhost URL,因为它将最终部署到生产网站。我想我可以根据需要将其存储在appsettings中,但是我希望不必在此保留路径。
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"}
}
}
}
});
});
答案 0 :(得分:0)
这不是错误,而是功能。您只是无法在ConfigureServices
中做您想做的事情。
如果要访问 wwwroot 文件夹,请将代码放入Configure
方法或ServiceCollection
方法中,则可以获取IServiceProvider
实例,例如{{ 1}}。
样本
.AddTransient