Startup.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Masuit.LuceneEFCore.SearchEngine;
  2. using Masuit.LuceneEFCore.SearchEngine.Extensions;
  3. using Masuit.LuceneEFCore.SearchEngine.Interfaces;
  4. using Microsoft.AspNetCore.Builder;
  5. using Microsoft.AspNetCore.Hosting;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Microsoft.EntityFrameworkCore;
  8. using Microsoft.Extensions.Configuration;
  9. using Microsoft.Extensions.DependencyInjection;
  10. using Newtonsoft.Json;
  11. using Swashbuckle.AspNetCore.Swagger;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.IO;
  15. using WebSearchDemo.Database;
  16. namespace WebSearchDemo
  17. {
  18. public class Startup
  19. {
  20. public Startup(IConfiguration configuration)
  21. {
  22. Configuration = configuration;
  23. }
  24. public IConfiguration Configuration { get; }
  25. // This method gets called by the runtime. Use this method to add services to the container.
  26. public void ConfigureServices(IServiceCollection services)
  27. {
  28. services.AddDbContext<DataContext>(db =>
  29. {
  30. db.UseInMemoryDatabase("test");
  31. //db.UseSqlServer("Data Source=.;Initial Catalog=MyBlogs;Integrated Security=True");
  32. });
  33. services.AddSearchEngine<DataContext>(new LuceneIndexerOptions()
  34. {
  35. Path = "lucene"
  36. });
  37. services.AddSwaggerGen(c =>
  38. {
  39. c.SwaggerDoc("v1", new Info
  40. {
  41. Title = "API文档",
  42. Version = "v1"
  43. });
  44. c.DescribeAllEnumsAsStrings();
  45. c.IncludeXmlComments(AppContext.BaseDirectory + "WebSearchDemo.xml");
  46. }); //配置swagger
  47. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
  48. }
  49. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  50. public void Configure(IApplicationBuilder app, IHostingEnvironment env, DataContext db, ISearchEngine<DataContext> searchEngine)
  51. {
  52. if (env.IsDevelopment())
  53. {
  54. app.UseDeveloperExceptionPage();
  55. }
  56. db.Post.AddRange(JsonConvert.DeserializeObject<List<Post>>(File.ReadAllText(AppContext.BaseDirectory + "Posts.json")));
  57. searchEngine.CreateIndex(new List<string>()
  58. {
  59. nameof(Post)
  60. });
  61. app.UseSwagger().UseSwaggerUI(c =>
  62. {
  63. c.SwaggerEndpoint($"/swagger/v1/swagger.json", "懒得勤快的博客,搜索引擎测试");
  64. }); //配置swagger
  65. app.UseMvcWithDefaultRoute();
  66. }
  67. }
  68. }