我是.net核心开发的新手,我正在尝试将web应用.net核心2.1部署到Windows10中的iis.我遵循了所有的步骤,包括创建应用程序池“无托管代码”,一切工作正常.两天后,它停止工作,然后我使用发布类型重新部署我的项目为Debug,在这里我在浏览器中显示了这个异常,这与日志文件中的异常是一样的。

但是,相同的应用程序在visual studio中运行良好。我的机器安装了以下.net包。.Net核心运行时2.1.7(x64) .Net核心2.1.7 -托管.net核心运行时2.1.7(x86) .Net核心开发工具包2.1.503 (x86) .Net核心开发工具包2.1.503(x64) Microsoft Web Deploy 4.0
在阅读了所有可用的文章并调整和更改应用程序后,它终于可以工作了,但后来它停止工作,并给出了上面的错误。我的Startup.cs
public class Startup 
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }
    public IConfiguration Configuration { get; set; }
    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => false;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
        services.Configure<DataProtectionTokenProviderOptions>(o =>
        {
            o.Name = "Default";
            o.TokenLifespan = TimeSpan.FromHours(1);
        });
        services.AddDbContext<ApplicationDbContext>(options =>
        options.UseMySql(Configuration.GetConnectionString("DefaultConnection"),
        mysqloptions => {
            mysqloptions.ServerVersion(new Version(8, 0, 13), ServerType.MySql);
        }));
        services.AddTransient<IProductRepository, EFProductRepository>();
        services.AddScoped<Cart>(sp => SessionCart.GetCart(sp));
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddIdentity<ApplicationUser, IdentityRole>(
            options =>
            {
                options.Stores.MaxLengthForKeys = 128;
                options.Tokens.PasswordResetTokenProvider = TokenOptions.DefaultAuthenticatorProvider;
                options.SignIn.RequireConfirmedEmail = false;
                options.Password.RequireDigit = false;
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequireUppercase = false;
            }
            )
              .AddEntityFrameworkStores<ApplicationDbContext>()
              .AddRoleManager<RoleManager<IdentityRole>>()
              .AddRoles<IdentityRole>()
           //.AddDefaultUI();
           .AddDefaultTokenProviders();
        //Authentication
        services.AddDbContext<MainContext>(options =>
      options.UseMySql(Configuration.GetConnectionString("ModelConnectionString"),
       mysqloptions => {
           mysqloptions.ServerVersion(new Version(8, 0, 13), ServerType.MySql);
           mysqloptions.MigrationsAssembly("GasStationApp");
       }));
        services.AddScoped<IUserClaimsPrincipalFactory<ApplicationUser>, MyUserClaimsPrincipalFactory>();
        services.AddMvc().AddNToastNotifyToastr(new ToastrOptions()
        {
            ProgressBar = false,
            PositionClass = ToastPositions.TopFullWidth
        }
        );
        services.Configure<IISOptions>(options => {
            options.AutomaticAuthentication = false;
            options.ForwardClientCertificate = false;});
我的Program.cs
public class Program
{
    public static int Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.RollingFile("logs/log-{Date}.txt")
            .CreateLogger();
        try
        {
            Log.Information("Starting web host");
            BuildWebHost(args).Run();
            return 0;
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly");
            return 1;
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }
    public static IWebHost BuildWebHost(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
        .UseKestrel()
        .ConfigureAppConfiguration((builderContext, config) =>
        {
            config.AddJsonFile("appsettings.json", optional: false);
        })
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
      .UseStartup<Startup>()
          .UseSerilog() // <-- Add this line
          .Build();
}该应用程序在VS2017中运行良好,但在Windows10中部署到IIS时无法工作。请帮助我解决此问题。任何建议都会有所帮助。提前谢谢。
发布于 2019-02-28 22:02:00
这些文件是appsettings.json和appsettings.{environment}.json。ASP.NET核心依赖于环境变量(ASPNETCORE_ENVIRONMENT)来确定要加载的配置。默认情况下,在Visual Studio中将其设置为Development,这当然会导致使用appsettings.Development.json。在发布应用程序时,您应该将目标上的ASPNETCORE_ENVIRONMENT环境变量设置为Production,这将导致使用appsettings.Production.json。(我不记得大小写是否重要,尽管它可能很重要,特别是像Linux和Mac使用的区分大小写的文件系统。最好确保文件名为appsettings.Production.json,以防万一。)
此外,特定于环境的JSON文件会覆盖不特定的JSON文件。换句话说,先读入appsettings.json,然后再读入appsettings.{environment}.json。在特定于环境的版本中设置的appsettings.json中的任何内容都将被特定于环境的版本中的该值覆盖。
简而言之,模式应该是这样的。任何非特定于特定环境的配置都应该放入appsettings.json中。任何特定于环境的配置都应该进入相应的特定于环境的配置文件中。我发现在appsettings.json中放置环境特定的和秘密配置值的占位符也是一种很好的做法。例如:
 "ConnectionStrings": {
     "DefaultConnection": "[CONNECTION STRING]"
 }由于配置本身的方式,而且由于appsettings.json是第一个加载的内容,您可以在任何其他形式的配置中提供实际值(特定于环境的JSON、环境变量、用户秘密、Azure密钥库等)。然后在一个地方记录你的应用程序的所有配置,并清楚地指示实际需要提供什么。
https://stackoverflow.com/questions/54925006
复制相似问题