【问题标题】:Getting error 500.30 when I try to run my asp.net core 3.1 app on azure当我尝试在 azure 上运行我的 asp.net core 3.1 应用程序时出现错误 500.30
【发布时间】:2020-08-21 23:43:05
【问题描述】:

我有一个连接到 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();
            });
        }
    }

【问题讨论】:

  • 从堆栈跟踪中显示,您可以检查 EmailConfiguration 或 EmailSender 中名为“implementationInstance”的参数吗?显然,此参数未添加到您的应用程序设置/Key Vault 设置中。很可能这就是为什么,您会收到错误#3,除非在错误#1 和 2 后面隐藏更多错误。
  • 我一次返回一个提交,大约有 5 个不同的问题——一些在 Startup.cs(重复行和我的模型/调用以初始化种子数据),各种 .json 文件(当我删除 EmailConfiguration 部分时会出错),并且由于某种原因,在我安装 Microsoft 的 Identity 软件时创建的自动生成的 _LoginPartial.cshtml 文件中。我仍在处理第一个和最后一个,但我已经修复了其他的。
  • 在您提到的错误中,还剩下哪一个?你删除了哪些?另外,您是否检查了参数“implementationInstance”?
  • 我不知道还有哪些错误 - 我已经在 Azure 的网站上进行了搜索,但我一开始就找不到这些错误。如果你知道我怎么能找到它们,我会更新剩下的。

标签: asp.net-core azure-web-app-service


【解决方案1】:

已修复 - 可能存在其他问题,但如果您使用 db 部署到 Azure,请确保您的 db 的防火墙设置已将“允许 Azure 服务和资源访问此服务器”设置为“是”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多