zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Tools/FileServer/Startup.cs

58 lines
2.0 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using System;
using System.IO;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
namespace ETFileServer
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser(); //开启目录浏览
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment()) app.UseDeveloperExceptionPage();
2021-04-11 19:50:39 +08:00
IConfigurationRoot config = new ConfigurationBuilder()
2021-04-08 20:09:59 +08:00
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", true)
.Build();
string configDir = config["DirectoryPath"];
configDir = new DirectoryInfo(configDir).FullName;
Console.WriteLine(configDir);
UseStaticFiles(app, configDir);
app.Run(async (context) => { await context.Response.WriteAsync("Welcome to the ET file server!"); });
}
private void UseStaticFiles(IApplicationBuilder app, string filePath)
{
2021-04-11 19:50:39 +08:00
StaticFileOptions staticfile = new StaticFileOptions
2021-04-08 20:09:59 +08:00
{
ServeUnknownFileTypes = true,
FileProvider = new PhysicalFileProvider(filePath),
DefaultContentType = "application/x-msdownload"
};
// 设置MIME类型类型
staticfile.ContentTypeProvider = new FileExtensionContentTypeProvider
{
Mappings =
{
["*"] = "application/x-msdownload"
}
};
app.UseDirectoryBrowser(new DirectoryBrowserOptions(){ FileProvider = staticfile.FileProvider });
app.UseStaticFiles(staticfile);
}
}
}