Startup.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.IO;
  3. using Microsoft.AspNetCore.Builder;
  4. using Microsoft.AspNetCore.Hosting;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.AspNetCore.StaticFiles;
  7. using Microsoft.Extensions.Configuration;
  8. using Microsoft.Extensions.DependencyInjection;
  9. using Microsoft.Extensions.FileProviders;
  10. namespace ETFileServer
  11. {
  12. public class Startup
  13. {
  14. public void ConfigureServices(IServiceCollection services)
  15. {
  16. services.AddDirectoryBrowser(); //开启目录浏览
  17. }
  18. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  19. {
  20. if (env.IsDevelopment()) app.UseDeveloperExceptionPage();
  21. var config = new ConfigurationBuilder()
  22. .SetBasePath(Directory.GetCurrentDirectory())
  23. .AddJsonFile("appsettings.json", true)
  24. .Build();
  25. string configDir = config["DirectoryPath"];
  26. configDir = new DirectoryInfo(configDir).FullName;
  27. Console.WriteLine(configDir);
  28. UseStaticFiles(app, configDir);
  29. app.Run(async (context) => { await context.Response.WriteAsync("Welcome to the ET file server!"); });
  30. }
  31. private void UseStaticFiles(IApplicationBuilder app, string filePath)
  32. {
  33. var staticfile = new StaticFileOptions
  34. {
  35. ServeUnknownFileTypes = true,
  36. FileProvider = new PhysicalFileProvider(filePath),
  37. DefaultContentType = "application/x-msdownload"
  38. };
  39. // 设置MIME类型类型
  40. staticfile.ContentTypeProvider = new FileExtensionContentTypeProvider
  41. {
  42. Mappings =
  43. {
  44. ["*"] = "application/x-msdownload"
  45. }
  46. };
  47. app.UseDirectoryBrowser(new DirectoryBrowserOptions(){ FileProvider = staticfile.FileProvider });
  48. app.UseStaticFiles(staticfile);
  49. }
  50. }
  51. }