Jake12342134
Jake12342134

Reputation: 1767

Newly generated ASP.NET Core 3.1 app won't run due to Startup.Configure NullReferenceException

I've just created a new ASP.NET Core 3.1 Web API, and this is my first time running it. I've added some endpoints and starting code and altered the Startup with some extra configurations, but the program isn't running at all. I'm not sure whether my startup is affecting this but I can't see any anything I've added would break the startup sequence.

The exception I'm getting is:

System.NullReferenceException: Object reference not set to an instance of an object.
   at -snip-.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in C:\-snip-\Startup.cs:line 56
   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.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.ApplicationInsights.AspNetCore.ApplicationInsightsStartupFilter.<>c__DisplayClass2_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at -snip-.Program.Main(String[] args) in C:\-snip-\Program.cs:line 16

Startup class

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)
        {
            services.AddControllers();
            services.AddCors();
            services.AddApplicationInsightsTelemetry();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("", new OpenApiInfo
                {
                    Title = "",
                    Version = "v1"
                });
            });

            services.AddTransient<IClientSettingsBlobService, ClientSettingsBlobService>();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            
            string origins = Configuration["CorsAllowedOrigins"];
            string[] originsArray = origins.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(o => o.Trim()).ToArray();
            app.UseCors(b => b.AllowAnyMethod().AllowAnyHeader().AllowCredentials().WithOrigins(originsArray));
            app.UseHttpsRedirection();
            app.UseAuthentication();
            app.UseAuthorization();

            
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "");
            });

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
        }
    }

Upvotes: 1

Views: 1263

Answers (1)

Legacy Code
Legacy Code

Reputation: 750

here string origins = Configuration["CorsAllowedOrigins"]; ... if origins is null, then Split will cause a NullReferenceException

Upvotes: 1

Related Questions