我最近在解决方案上从dotnet core 2.2升级到3.1。我已经能够创建另一个解决方案并使它在3.1上运行,但是对于我的.net核心Web应用程序,我遇到了麻烦。 (在本地IISExpress上运行)
我不断收到错误:HTTP Error 500.30 - ANCM In-Process Start Failure
从我的解决方案中删除了AspNetCore的所有2.X实例并从Microsoft执行了建议的代码更改后,我仍然不断收到错误消息。我查看了事件日志,这些是我仅有的两个通知:
1。Application '/LM/W3SVC/2/ROOT' with physical root 'C:\Repositories\X\X\' hit unexpected managed exception, exception code = '0xe0434352'. Please check the stderr logs for more information.
2。Application '/LM/W3SVC/2/ROOT' with physical root 'C:\Repositories\X\X\' failed to load clr and managed application. CLR worker thread exited prematurely
我什至尝试设置一些try / catch块来查看是否抛出了异常,但无济于事。
所以我的问题是:您如何调试配置服务出了什么问题?
编辑:Startup.cs
using System;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using PoncaHillsPumpkins.Config;
using PoncaHillsPumpkins.Data.Services;
using PHP.Core.Entities;
using Stripe;
using PHP.Models.Stripe;
using PHP.Models.SendGrid;
using PoncaHillsPumpkins.Config.EmailSender;
using PHP.Utilities.Triggers;
using PHP.DAL;
using PHP.Utilities.Email.SendGrid;
using System.Net.Http;
using PHP.Models.Google.Maps;
using PHP.Utilities.Maps.GoogleMaps;
using PoncaHillsPumpkins.Data.Department;
using PHP.Utilities.Maps;
using ElmahCore.Mvc;
using ElmahCore.Sql;
using ElmahCore.Mvc.Notifiers;
using PoncaHillsPumpkins.Config.CustomExceptionMiddleware.Extensions;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.Extensions.Hosting;
namespace PoncaHillsPumpkins
{
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)
{
DbConnectionString.ConnectionString = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContextPool<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddRoles<ApplicationRole>()
.AddRoleManager<RoleManager<ApplicationRole>>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders(); //2FA
services.AddTransient<ApplicationDbContext>();
services.AddTransient<HttpClient>();
/*
services.AddAuthorization(options =>
{
options.AddPolicy("TestPolicy", policy => policy.RequireRole("Admin"));
});*/
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<IdentityOptions>(options =>
{
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 8;
options.Password.RequiredUniqueChars = 1;
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(15);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = true;
options.SignIn.RequireConfirmedEmail = true;
});
//For Account Manage
services.AddScoped<UserProfileService>();
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "JSI_Auth";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(15);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
options.SlidingExpiration = true;
});
services.AddControllersWithViews(options => options.EnableEndpointRouting = false);
services
.AddRazorPages() //config.Filters.Add(new Config.Filters.PreviousURLFilter());
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
});
services.AddMemoryCache();
services.AddSession(session => {
session.Cookie.IsEssential = true;
session.IdleTimeout = TimeSpan.FromMinutes(30);
});
#region ExternalServices
services.Configure<StripeSettings>(Configuration.GetSection("Stripe"));
services.Configure<GoogleMapsSettings>(Configuration.GetSection("GoogleMaps"));
services.Configure<SendGridAuthMessageSender>(Configuration.GetSection("SendGrid"));
services.AddTransient<IEmailSender, SendGridEmailSender>();
services.AddSingleton<SendGridMailer>();
services.AddSingleton<GoogleMapsService>();
#endregion
services.Configure<TriggerSystemOptions>(options => { options.Triggers = TriggerConfig.Register(); });
services.AddSingleton<TriggerSystem>();
//Department & Location Services
services.AddSingleton<OrderDepartment>();
services.AddSingleton<AddressService>();
services.Configure<ApiBehaviorOptions>(options =>
{
options.SuppressConsumesConstraintForFormFileParameters = true;
options.SuppressInferBindingSourcesForParameters = true;
options.SuppressModelStateInvalidFilter = true;
});
var mailOptions = new EmailOptions
{
MailSender = "[email protected]",
MailRecipient = "[email protected]",
SendYsod = true,
SmtpServer = "localhost"
};
/*
services.AddElmah<SqlErrorLog>(options =>
{
//options.Path = ""
options.CheckPermissionAction = context => context.User.IsInRole("Admin");
options.ConnectionString = Configuration.GetConnectionString("DefaultConnection");
options.Notifiers.Add(new ErrorMailNotifier("Email", new EmailOptions() { SendYsod = true, MailRecipient = "X@X" }));
});*/
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
StripeConfiguration.ApiKey = Configuration.GetSection("Stripe")["SecretKey"];
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
//app.UseDatabaseErrorPage();
}
else
{
//app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseAuthentication();
app.ConfigureCustomExceptionMiddleware();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/healthz");
endpoints.MapRazorPages();
endpoints.MapDefaultControllerRoute();
//endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
//app.UseElmah();
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace PoncaHillsPumpkins
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
似乎VS实例附带的东西没有在IIS Express下运行的正确软件/配置。只需将调试器从调试器切换到项目,即可在本地主机(5001端口,类似于部署)上运行。