Angular Net Core 3.1 ISpaStaticFileProvider发布时出现问题
我无法运行我的Net Core 3.1网站。正在读取标准文件,其中显示: 未处理的异常。System.InvalidOperationException:若要使用UseSpacStaticFiles,必须首先在服务提供程序中注册ISpaStaticFileProvider,通常是通过调用services.AddSpaStaticFiles 我发布这个项目从来没有遇到过问题,Startup.cs已经有一段时间没有被修改了 也许我忘记了在从2.2迁移到3.1的过程中做一些更改Angular Net Core 3.1 ISpaStaticFileProvider发布时出现问题,angular,asp.net-core-3.1,Angular,Asp.net Core 3.1,我无法运行我的Net Core 3.1网站。正在读取标准文件,其中显示: 未处理的异常。System.InvalidOperationException:若要使用UseSpacStaticFiles,必须首先在服务提供程序中注册ISpaStaticFileProvider,通常是通过调用services.AddSpaStaticFiles 我发布这个项目从来没有遇到过问题,Startup.cs已经有一段时间没有被修改了 也许我忘记了在从2.2迁移到3.1的过程中做一些更改 public ISer
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddAuthorization();
services.AddControllersWithViews();
services.AddMvcCore().AddRazorPages().AddRazorRuntimeCompilation();
services.AddJsReport(new LocalReporting().UseBinary(JsReportBinary.GetBinary()).KillRunningJsReportProcesses().AsUtility().Create());
services.ConfigureAuthentication(Configuration.GetValue<string>("Secret"));
services.AddAutoMapper(profileTypes);
services.ConfigureCors();
services.AddDbContext<TavoraContext>
(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection"),
mysqlOptions =>
{
mysqlOptions.ServerVersion(new Version(8, 0, 16), ServerType.MySql);
mysqlOptions.MigrationsAssembly("TavoraCore");
}));
// Autofac
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterModule<TavoraService.AutofacModule>();
containerBuilder.Populate(services);
var container = containerBuilder.Build();
// In production, the Angular files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
return new AutofacServiceProvider(container);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
//if (Regex.IsMatch(Configuration["ASPNETCORE_URLS"], @"https?://localhost[:/]")) // is local
//{
// string tsDefinitionsPath = "./ClientApp/src/app/models/";
// string tsDefinitionsFullPath = Path.Combine(env.ContentRootPath, tsDefinitionsPath);
// app.GenerateTypeScriptInterfaces(tsDefinitionsFullPath);
// app.UseCors(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
//}
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Resources")),
RequestPath = new PathString("/Resources")
});
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Themes")),
RequestPath = new PathString("/Themes")
});
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=index}/{id?}");
});
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
}
公共IServiceProvider配置服务(IServiceCollection服务)
{
services.AddAuthorization();
services.AddControllersWithViews();
services.AddMvcCore().AddRazorPages().AddRazorRuntimeCompilation();
services.AddJsReport(新的LocalReporting().usebarynal(JsReportBinary.GetBinary()).killrunningjsreportprocesss().AsUtility().Create());
services.ConfigureAuthentication(Configuration.GetValue(“Secret”);
服务。AddAutoMapper(ProfileType);
services.ConfigureCors();
services.AddDbContext
(options=>options.UseMySql(Configuration.GetConnectionString(“DefaultConnection”),
mysqlOptions=>
{
ServerVersion(新版本(8,0,16),ServerType.MySql);
mysqlOptions.migrationassembly(“TavoraCore”);
}));
//自动传真
var containerBuilder=新的containerBuilder();
containerBuilder.RegisterModule();
containerBuilder.Populate(服务);
var container=containerBuilder.Build();
//在生产中,角度文件将从此目录中提供
services.AddSpaStaticFiles(配置=>
{
configuration.RootPath=“ClientApp/dist”;
});
返回新的AutofacServiceProvider(容器);
}
//此方法由运行时调用。使用此方法配置HTTP请求管道。
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
//if(Regex.IsMatch(配置[“ASPNETCORE_url”],@“https?:///localhost[://]”)是本地的
//{
//字符串tsDefinitionsPath=“/ClientApp/src/app/models/”;
//字符串tsDefinitionsFullPath=Path.Combine(env.ContentRootPath,tsDefinitionsPath);
//app.GenerateTypeScript接口(tsDefinitionsFullPath);
//app.UseCors(policy=>policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
//}
}
其他的
{
app.UseExceptionHandler(“/Error”);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseStaticFiles(新的StaticFileOptions()
{
FileProvider=new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),@“Resources”),
RequestPath=新路径字符串(“/Resources”)
});
app.UseStaticFiles(新的StaticFileOptions()
{
FileProvider=new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),@“Themes”),
RequestPath=新路径字符串(“/Themes”)
});
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(端点=>
{
endpoints.MapControllerRoute(
名称:“默认”,
模式:“{controller}/{action=index}/{id?}”);
});
app.UseSpa(spa=>
{
//要从ASP.NET Core了解更多有关提供角度SPA的选项,
//看https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath=“ClientApp”;
if(env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript:“启动”);
}
});
}
嗯,我希望这个答案有助于某些人
具有Net Core 3.0+的Autofac需要进行一些更改
public IServiceProvider ConfigureServices -> public void ConfigureServices
而且,很明显,删除该行:
return new AutofacServiceProvider(container);
现在网站正在运行好吧,我希望这个答案有助于某些人 具有Net Core 3.0+的Autofac需要进行一些更改
public IServiceProvider ConfigureServices -> public void ConfigureServices
而且,很明显,删除该行:
return new AutofacServiceProvider(container);
现在网站正在运行