Я разрабатывал веб-приложение с ASP.Net Core MVC, используя C # и Entity Framework Core для взаимодействия с базой данных SQL, работающей на SQL Server 2017.
Приложение теперь в Постановка , но у меня проблемы.В свойствах приложения я изменяю переменную ASPNETCORE_ENVIRONMENT
с Development
на Staging
.Теперь, когда оно изменено на Staging
, приложение выдает много ошибок.Но если я переключу его обратно на Development
, он будет работать как обычно.
При запуске приложения с переменной Staging
появляются следующие ошибки:
Я использую Entity Framework Core Database -первый подход к автоматической генерации объектов базы данных и их полей (например, SuspicioiusTypeID
, BayID
и т. д.). решение Я обнаружил, что ошибка не отражает мою проблему.Моя ошибка возникает только тогда, когда я нахожусь в среде, отличной от Development
.
Чем вызвана эта ошибка и как ее исправить?
Startup
, ConfigureServices
и Configure
:
public class Startup
{
public static string ConnectionString { get; set; }
public static NICSContext Context { get; set; }
public static string version;
public Startup(IConfiguration configuration)
{
Configuration = configuration;
ConnectionString = Configuration.GetConnectionString("DefaultConnection");
version = Configuration["Version"];
DbContextOptionsBuilder <NICSContext> optionBuilder = new DbContextOptionsBuilder<NICSContext>();
optionBuilder.UseSqlServer(ConnectionString);
Context = new NICSContext(optionBuilder.Options);
}
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.AddDbContext<NICSContext>(options =>
options.UseSqlServer(ConnectionString));
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options => {
options.LoginPath = "/Login";
});
// Repository Interfaces
// REMOVED FOR CLARITY AND PROPRIETARY PURPOSES
// Service Interfaces
// REMOVED FOR CLARITY AND PROPRIETARY PURPOSES
services.AddMvc(options => {
// Default policy - Authorize
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
services.AddDistributedMemoryCache();
services.AddSession();
// Singletons
services.AddSingleton(new MapperService().Mapper);
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
app.UseDatabaseErrorPage();
}
if (env.IsStaging() || env.IsProduction())
{
app.UseExceptionHandler("/Error");
}
app.UseFileServer();
app.UseSession();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Dashboard}/{action=Index}/{id?}");
});
}