0

我有一个 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 消息。服务运行时不显示静态页面。我假设我在这里做错了什么。这样做的正确方法是什么?

4

1 回答 1

0

app.UseFileServer();

调用 app.UseFileServer 开启静态文件和默认文件的服务,目录浏览没有开启,所以当你访问静态文件时,会返回 404 错误。

为了解决这个问题,我们可以启用目录浏览,尝试更改您的代码如下(默认情况下静态文件存储在wwwroot文件夹中):

        app.UseFileServer(new FileServerOptions
        { 
            RequestPath = "/StaticFiles", //assign the request path.
            EnableDirectoryBrowsing = true
        });

然后,测试截图如下:

在此处输入图像描述

更多详细信息,请查看ASP.NET Core 中的静态文件

于 2020-11-02T12:28:15.940 回答