问题描述
我是第一次将 Web 应用程序发布到 Windows 2019 服务器 (AWS EC2),当我发布一个空项目时它工作正常,但在发布实际项目时失败。它显示“HTTP 错误 503。服务不可用”。错误。
我为服务器所做的设置:
- 已安装 IIS
- 网络部署 3
- asp.net 核心托管包 3.1.3
- 打开需要的端口,例如:3389、80、443 和 8172
尝试比较两个项目的 startup.cs 文件,但无法找出导致此类错误的原因。
Startup.cs:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = ".ExpirationCookie";
options.Cookie.IsEssential = true;
options.Cookie.HttpOnly = true;
options.AccessDeniedpath = "/Identity/Pages/Account/AccessDenied";
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.SlidingExpiration = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Events = new CookieAuthenticationEvents
{
OnValidatePrincipal = ValidateAsync.ValidatingAsync
};
})
.Configure<SecurityStampValidatorOptions>(options =>
{
options.ValidationInterval = TimeSpan.FromMinutes(0);
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UsesqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser,IdentityRole>(options => {
options.SignIn.RequireConfirmedAccount = false;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddIdentityCore<ApplicationUser>()
.AddRoles<IdentityRole>()
.AddClaimsPrincipalFactory<UserClaimsPrincipalFactory<ApplicationUser,IdentityRole>>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultUI();
services.AddSingleton<IEmailSender,EmailSender>();
services.Configure<EmailOptions>(Configuration);
services.AddHangfire(config => config.UsesqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));
services.AddHangfireServer();
services.AddControllersWithViews();
services.AddRazorPages().AddRazorRuntimeCompilation();
services.AddScoped<IDbInitializer,DbInitializer>();
services.AddScoped<IExpirationJob,ExpirationJob>();
services.AddScoped<IReminderJob,EmailReminder>();
services.AddSingleton<IActionContextAccessor,ActionContextAccessor>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app,IWebHostEnvironment env,IRecurringJobManager recurringJobManager,IServiceProvider serviceProvider,IDbInitializer dbInitializer)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios,see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
dbInitializer.Initialize();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseHangfireDashboard();
app.UseHangfireDashboard("/hangfire",new DashboardOptions()
{
Authorization = new[] { new CustomAuthorizefilter() }
});
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseCookiePolicy();
recurringJobManager.AddOrUpdate(
"End Users Subscription",() => serviceProvider.GetService<IExpirationJob>().SetExpired(),Cron.Daily
);
recurringJobManager.AddOrUpdate(
"Send End of Subscription Reminder",() => serviceProvider.GetService<IReminderJob>().SendReminder(),Cron.Daily
);
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)