.net コア アプリケーションに問題があります。この問題は、ユーザー シークレットの json ファイルを読み取れないことです。アプリケーションは開発では問題なく動作しますが、ホスティング サーバーのリリース バージョンでアプリケーションのエラーが発生します。
以下のエラーコード
アプリケーション起動例外: System.ArgumentNullException: 値を null にすることはできません。パラメーター名: C:\Users\myComp\source\repos\myApplicationCore\myApplicationCore.WebUI\Startup の myApplicationCore.WebUI.Startup.ConfigureServices(IServiceCollection サービス) の System.Data.SqlClient.SqlConnectionStringBuilder.set_Password(文字列値) のパスワード。 cs:42 行目 --- 例外がスローされた前の場所からのスタック トレースの終わり --- Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection サービス) で Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() でMicrosoft.AspNetCore.Hosting.Internal.WebHost.Initialize() --- 例外がスローされた前の場所からのスタック トレースの終わり --- Microsoft.AspNetCore.Hosting.Internal.WebHost で。BuildApplication() クリティカル: Microsoft.AspNetCore.Hosting.Internal.WebHost[6] アプリケーション起動例外 System.ArgumentNullException: 値を null にすることはできません。パラメーター名: C:\Users\myComp\source\repos\myApplicationCore\myApplicationCore.WebUI\Startup の myApplicationCore.WebUI.Startup.ConfigureServices(IServiceCollection サービス) の System.Data.SqlClient.SqlConnectionStringBuilder.set_Password(文字列値) のパスワード。 cs:42 行目 --- 例外がスローされた前の場所からのスタック トレースの終わり --- Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection サービス) で Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() でMicrosoft.AspNetCore.Hosting.Internal.WebHost. http://127.0.0.1:25696アプリケーションを開始しました。Ctrl+C を押してシャットダウンします。アプリケーションをシャットダウンしています...
私の Startup.cs ファイル
public class Startup
{
public IConfiguration Configuration;
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
var builder = new SqlConnectionStringBuilder(Configuration.GetConnectionString("DefaultConnection"));
builder.Password = Configuration["DbPassword"];
services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(builder.ConnectionString,
b =>
{
b.MigrationsAssembly("myApplicationCore.WebUI");
b.ServerVersion(new Version(5, 6, 44), ServerType.MySql); // replace with your Server Version and Type
}
));
services.AddIdentity<ApplicationUser, IdentityRole>(opts => {
opts.User.RequireUniqueEmail = true;
opts.Password.RequiredLength = 3;
opts.Password.RequireNonAlphanumeric = false;
opts.Password.RequireLowercase = false;
opts.Password.RequireUppercase = false;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddTransient<IUnitOfWork, EfUnitOfWork>();
services.AddTransient<IEmailSender, EmailSender>();
services.Configure<AuthMessageSenderOptions>(Configuration);
services.ConfigureApplicationCookie(options => options.LoginPath = "/Account/Sign");
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSignalR();
}
// 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();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStatusCodePages();
app.UseStaticFiles();
app.UseAuthentication();
app.UseSignalR(routes =>
{
routes.MapHub<HubSignal>("/hubCon");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
routes.MapSpaFallbackRoute(
name: "spa-fallback",
templatePrefix: "Portal",
defaults: new { controller = "Portal", action = "Index" });
});
SeedData.EnsurePopulated(app);
SeedData.CreateRoles(app.ApplicationServices).Wait();
SeedData.CreateIdentityUsers(app.ApplicationServices).Wait();
}
}
これは私の Program.cs ファイルです
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
Web アドレスに入力すると、このエラーが表示されます。
アプリケーションの起動中にエラーが発生しました。.NET コア 4.6.27817.03 X86 v4.0.0.0 | Microsoft.AspNetCore.Hosting バージョン 2.2.0-rtm-35687 | Microsoft Windows 10.0.14393 | 助けが必要?
サーバーはsecret.jsonファイルを見つけることができないと思いますが、ファイルを見つける方法がわかりません。
どうすればこの問題を解決できますか?
助けてくれてありがとう。