В последнее время программное обеспечение периодически отключается, и это обычно отображается в журналах:
Невозможно выполнить привязку к http://localhost:28575 в интерфейсе обратной связи IPv4: 'Ошибка -4092 EACCES разрешение отклонено '.
Этот порт (28575) постоянно меняется!Хотя я использовал этот код:
.UseUrls("http://localhost:29983")
Конечно, иногда, без записи каких-либо исключений в журналах, отображается ошибка 403 и программное обеспечение завершает работу.
Запуск.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection();
services.AddScoped<IUnitOfWork, UnitOfWork>();
services.AddDbContext<AppDbContext>(options => options.UseSqlServer("Server =.;Database=***;User Id=***;Password=***;MultipleActiveResultSets=true;",b=> b.UseRowNumberForPaging()));
services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
options.Password.RequiredLength = 6;
options.Password.RequireLowercase = false;
options.Password.RequireUppercase = false;
options.Password.RequireDigit = false;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequiredUniqueChars = 1;
}).AddEntityFrameworkStores<AppDbContext>().AddDefaultTokenProviders();
services.AddSingleton<IUnitOfWork, UnitOfWork>();
// store cache in db :
services.AddSession();
services.AddSingleton<Microsoft.AspNetCore.Authentication.Cookies.ITicketStore, Controllers.DistributedCacheTicketStore>();
services.AddDistributedSqlServerCache(options =>
{
options.ConnectionString = @"Server =.;Database=***;User Id=***;Password=***;MultipleActiveResultSets=true;";
options.SchemaName = "dbo";
options.TableName = "AppSqlCache";
});
services.AddAuthorization(options =>
{
options.AddPolicy("myAuthorize", policy => policy.Requirements.Add(new Controllers.HasScopeRequirement("myAuthorize")));
});
services.AddSingleton<Microsoft.AspNetCore.Authorization.IAuthorizationHandler, Controllers.HasScopeHandler>();
services.AddMvcActionsDiscoveryService();
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.SessionStore = services.BuildServiceProvider().GetService<Microsoft.AspNetCore.Authentication.Cookies.ITicketStore>();
options.ExpireTimeSpan = TimeSpan.FromDays(5);
options.SlidingExpiration = true;
options.AccessDeniedPath = "/Home/AccessDenied";
options.Events.OnRedirectToLogin = context =>
{
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
return Task.CompletedTask;
};
});
services.AddMvc();
services.Configure<GzipCompressionProviderOptions>(options => options.Level = System.IO.Compression.CompressionLevel.Optimal);
services.AddResponseCompression();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStatusCodePagesWithReExecute("/Home/error/{0}");
app.UseExceptionHandler("/Home/error/{0}");
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
{
// Cache static file for 1 year
if (!string.IsNullOrEmpty(context.Context.Request.Query["v"]))
{
context.Context.Response.Headers.Add("cache-control", new[] { "public,max-age=2628000" }); // month=2628000, year = 31536000
context.Context.Response.Headers.Add("Expires", new[] { DateTime.UtcNow.AddMonths(1).ToString("R") }); // Format RFC1123
}
}
});
app.UseResponseCompression();
app.UseAuthentication();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute("AreaRoute", "{area:exists}/{controller=Account}/{action=Login}/{id?}");
routes.MapRoute("FirstPage", "{controller=Account}/{action=Login}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
SeedData.EnsurePopulated(app);
}