asp.net-core - 当我尝试在 azure 上运行我的 asp.net core 3.1 应用程序时出现错误 500.30
问题描述
我有一个连接到 sql server 数据库和机密文件的 asp.net core 3.1 应用程序。我可以在本地运行这一切,它可以工作。
我将我的应用程序发布到 Azure,将我的数据库迁移到那里,并创建了一个 Key Vault。所有人都说他们成功了。
当我尝试发布我的应用程序时,它显示数据库和密钥保管库的“已配置”,并且应用程序部署成功。但是,当它将我重定向到应该运行我的应用程序的网站时,我收到 500.30 错误。
这些是我昨天遇到的错误:(我不确定我现在得到了什么,因为我似乎无法在 Azure 上找到找到这些错误的页面,我花了大约 20 分钟寻找它)
错误 #1
Application: w3wp.exe
CoreCLR Version: 4.700.20.26901
.NET Core Version: 3.1.6
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentNullException: Value cannot be null. (Parameter 'implementationInstance')
at Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton[TService](IServiceCollection services, TService implementationInstance)
at RecipeCompendiumTool.Startup.ConfigureServices(IServiceCollection services) in C:\Users\julie\source\repos\RecipeCompendiumTool\Startup.cs:line 44
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(Object instance, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass9_0.<Invoke>g__Startup|0(IServiceCollection serviceCollection)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass8_0.<Build>b__0(IServiceCollection services)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startupType, HostBuilderContext context, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass12_0.<UseStartup>b__0(HostBuilderContext context, IServiceCollection services)
at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at RecipeCompendiumTool.Program.Main(String[] args) in C:\Users\julie\source\repos\RecipeCompendiumTool\Program.cs:line 16
错误 #2
Application '/LM/W3SVC/312799001/ROOT' with physical root 'D:\home\site\wwwroot\' hit unexpected managed exception, exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs:
Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'implementationInstance')
at Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton[TService](IServiceCollection services, TService implementationInstance)
at RecipeCompendiumTool.Startup.ConfigureServices(IServiceCollection services) in C:\Users\julie\source\repos\RecipeCompendiumTool\Startup.cs:line 44
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(Object instance, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass9_0.<Invoke>g__Startup|0(IServiceCollection serviceCollection)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass8_0.<Build>b__0(IServiceCollection services)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startupType, HostBuilderContext context, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass12_0.<UseStartup>b__0(HostBuilderContext context, IServiceCollection services)
at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at RecipeCompendiumTool.Program.Main(String[] args) in C:\Users\julie\source\repos\RecipeCompendiumTool\Program.cs:line 16
Process Id: 6904.
File Version: 13.1.20169.6. Description: IIS ASP.NET Core Module V2 Request Handler. Commit: 62c098bc170f50feca15916e81cb7f321ffc52ff
错误 #3
Application '/LM/W3SVC/312799001/ROOT' with physical root 'D:\home\site\wwwroot\' failed to load coreclr. Exception message:
CLR worker thread exited prematurely
Process Id: 6904.
File Version: 13.1.20169.6. Description: IIS ASP.NET Core Module V2 Request Handler. Commit: 62c098bc170f50feca15916e81cb7f321ffc52ff
我的 Startup.cs 文件
public IConfiguration Configuration { get; }
public IWebHostEnvironment Environment { get; }
public Startup(IConfiguration configuration, IWebHostEnvironment environment)
{
Configuration = configuration;
Environment = environment;
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(IISServerDefaults.AuthenticationScheme);
services.AddControllersWithViews();
services.AddRazorPages();
services.Configure<FormOptions>(x => x.ValueCountLimit = 1000000000);
services.AddSingleton<IEmailConfiguration>(Configuration.GetSection("EmailConfiguration").Get<EmailConfiguration>());
services.AddTransient<IEmailService, EmailService>();
services.AddSingleton<IEmailSender, EmailSender>();
services.AddControllers().AddNewtonsoftJson(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
services.AddIdentity<RecipeCompendiumToolUser, IdentityRole>()
.AddEntityFrameworkStores<RecipeCompendiumToolContext>()
.AddDefaultTokenProviders();
services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0)
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
if (Environment.IsDevelopment())
{
services.AddRazorPages().AddRazorRuntimeCompilation();
services.AddDbContext<RecipeCompendiumToolContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
else if (Environment.IsStaging())
{
services.AddRazorPages().AddRazorRuntimeCompilation();
services.AddDbContext<RecipeCompendiumToolContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("TestConnection")));
}
else if (Environment.IsProduction())
{
services.AddDbContext<RecipeCompendiumToolContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ProdConnection")));
}
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)//, RecipeCompendiumToolSeedData seeder)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// TODO: The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
//seeder.InitializeSeedData();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
endpoints.MapControllers();
});
}
}
解决方案
已修复 - 可能存在其他问题,但如果您使用 db 部署到 Azure,请确保您的 db 的防火墙设置将“允许 Azure 服务和资源访问此服务器”设置为“是”。
推荐阅读
- javascript - 如何使用js/jquery访问标签的title属性
- python - 查询数据框和过滤列值并返回计数
- ansible - 我怎样才能用'y'在ansible中用expect回答一些问题?
- javascript - State not showing in my text component React Native
- c# - How to subtract a property value from a list on a condition
- java - jpanels 网格(用于连接四个游戏)-paintComponent 仅适用于左上面板
- linked-list - 在内存小的机器上逆序打印不可变链表
- sql - SQL 循环。我想遍历一个包含 SELECT 结果的循环
- c# - .NET Core 2.1 Web Scraper 控制台输出“HtmlAgilityPack.HtmlDocument
- git - 定期从大型 svn 存储库更新 git 存储库 - git svn fetch 和 git svn rebase 有何不同?