更改 URLPrefix 后,出现以下错误:
SPA 默认页面中间件无法返回默认页面“/index.html”,因为未找到它,并且没有其他中间件处理该请求。
因此需要一些东西来告诉 dotnet core 关于前缀,但我似乎无法找到正确的设置组合。
非常感谢帮助。
代码如下:
HostBuilder 设置为:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseHttpSys(options =>
{
options.AllowSynchronousIO = false;
options.Authentication.Schemes = AuthenticationSchemes.None;
options.Authentication.AllowAnonymous = true;
options.MaxConnections = null;
options.MaxRequestBodySize = 30000000;
options.UrlPrefixes.Add("http://localhost:5005/Product/Site");
});
webBuilder.UseStartup<Startup>();
});
Run Code Online (Sandbox Code Playgroud)
配置服务:
public override void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
services.AddMvc();
services.AddResponseCompression(opts =>
{
opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
new[] { "application/octet-stream" });
});
}
Run Code Online (Sandbox Code Playgroud)
然后配置是:
app.UseSpaStaticFiles();
app.UseRouting();
app.UseEndpoints
(
endpoints => …Run Code Online (Sandbox Code Playgroud) public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseHttpSys(options =>
{
options.UrlPrefixes.Add("how to get url from appsettings");
});
webBuilder.UseStartup<Startup>();
})
//host as window service
.UseWindowsService();
}
Run Code Online (Sandbox Code Playgroud)
应用程序设置配置,
"HttpSysOptions": {
"UrlPrefix": "http://localhost:8099/"
}
Run Code Online (Sandbox Code Playgroud)
看起来可以使用hostingContext.Configuration,但在 内无法使用UseHttpSys,该怎么办?谢谢!