【发布时间】:2019-02-28 11:45:46
【问题描述】:
我是 .net 核心开发的新手,我正在尝试在 Windows 10 中将 Web 应用程序 .net 核心 2.1 部署到 IIS。我已遵循所有步骤,包括创建应用程序池“无托管代码”并且一切正常。 2 天后它停止工作,然后我使用发布类型将我的项目重新部署到调试,在这里我在浏览器中显示了这个异常,这在日志文件中是相同的。
但是,相同的应用程序在 Visual Studio 中运行良好。我的机器安装了以下 .net 包。 .Net Core Runtme 2.1.7(x64) .Net Core 2.1.7 - Windows 服务器托管 .net 核心运行时 2.1.7(x86) .Net 核心 SDK 2.1.503 (x86) .Net Core SDK 2.1.503(x64) 微软网络部署 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;
});
我的程序.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 中运行良好,但在 Windows 10 中部署到 IIS 时无法运行 请帮我解决这个问题。任何意见将是有益的。提前致谢。
【问题讨论】:
标签: c# iis asp.net-core web-deployment asp.net-core-2.1