我有一个3.1版的ASP.NET CORE项目。我正在使用HTTP.SYS托管此项目。 wwwroot文件夹中有一些静态文件,该程序会提供这些文件。这是我的 startup.cs 的外观。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddMvc().ConfigureApiBehaviorOptions(o =>
{
o.SuppressMapClientErrors = true;
o.SuppressModelStateInvalidFilter = true;
})
.AddNewtonsoftJson(o => o.SerializerSettings.DateParseHandling = DateParseHandling.DateTimeOffset)
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.Configure<HttpSysOptions>(options =>
{
options.UrlPrefixes.Add("http://localhost:44385/");
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
});
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseFileServer();
app.UseRouting();
app.UseCors(o => o.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World");
});
});
}
}
我的 program.cs 看起来像这样:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseHttpSys();
webBuilder.UseStartup<Startup>();
}).UseWindowsService();
}
现在使用此代码,我可以创建Windows服务并运行它,但是当我点击该URL时,我只会看到Hello World消息。服务运行时,不会显示任何静态页面。我想我在这里做错了。什么是正确的方法?
答案 0 :(得分:0)
app.UseFileServer();
调用app.UseFileServer启用静态文件和默认文件的提供,目录浏览未启用,因此当您访问静态文件时,它将返回404错误。
要解决此问题,我们可以启用目录浏览功能,尝试按以下方式更改您的代码(默认情况下,静态文件存储在wwwroot
文件夹中):
app.UseFileServer(new FileServerOptions
{
RequestPath = "/StaticFiles", //assign the request path.
EnableDirectoryBrowsing = true
});
然后,测试屏幕截图如下:
更多详细信息,请检查Static files in ASP.NET Core