【发布时间】:2020-08-08 15:39:25
【问题描述】:
我使用 .NET Core 3.1.3 开发了一个项目。在 localhost 上它工作顺利。但是我在服务器上遇到了错误。我在互联网上做了很多研究。我尝试了所说的一切,但问题没有改善。
我的服务器功能:
我将服务器上的应用程序池更改如下:
下面我的项目中安装了 NuGet 文件:
我发布后的web配置文件如下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
最后我的启动文件如下
using DataAccess.EntityFreamwork;
using Entities.Domain;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.IO;
using Business.Helper;
using Business.ManagersApp;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.FileProviders;
namespace Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
readonly UserManagerApp _userManagerApp = new UserManagerApp();
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.AddDbContextPool<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DatabaseConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();
services.AddTransient<ApplicationDbContext>();
services.AddSession();
services.AddRazorPages();
services.AddRouting();
services.AddAuthentication(options =>
{
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
//.AddFacebook(options =>
//{
// options.AppId = Configuration["Authentication:Facebook:AppId"];
// options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
//})
//.AddGoogle(options =>
//{
// options.ClientId = Configuration["Authentication:Google:ClientId"];
// options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
//}).AddTwitter(options =>
//{
// options.ConsumerKey = Configuration["Authentication:Twitter:ConsumerAPIKey"];
// options.ConsumerSecret = Configuration["Authentication:Twitter:ConsumerSecret"];
//}).AddMicrosoftAccount(microsoftOptions =>
//{
// microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
// microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
//})
.AddCookie(config =>
{
config.Cookie.Name = "login";
config.LoginPath = "/Account/Login";
config.ExpireTimeSpan = TimeSpan.FromDays(1);
});
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSession();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
}
我不知道我还能做什么
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UserSecretsId>41e7fd2c-e5a3-4474-8f68-166bda4a7546</UserSecretsId>
</PropertyGroup>
还有我的 Web.exe
我的 Web.Exe 错误
Unhandled exception. System.IO.DirectoryNotFoundException: C:\inetpub\Web\
at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root,
ExclusionFilters filters)
at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
at Microsoft.Extensions.Configuration.FileConfigurationExtensions.SetBasePath
(IConfigurationBuilder builder, String basePath)
at DataAccess.EntityFreamwork.ApplicationDbContext.OnConfiguring(DbContextOpt
ionsBuilder optionsBuilder) in C:\Users\borah\Source\Repos\Hospital\DataAccess\E
ntityFreamwork\DatabaseContext.cs:line 113
at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
at Microsoft.EntityFrameworkCore.DbContext.Set[TEntity]()
at DataAccess.EntityFreamwork.Repository`1..ctor() in C:\Users\borah\Source\R
epos\Hospital\DataAccess\EntityFreamwork\Repository.cs:line 18
at Business.Abstract.ManagerBase`1..ctor() in C:\Users\borah\Source\Repos\Hos
pital\Business\Abstract\ManagerBase.cs:line 13
at Business.ManagersApp.UsersDetailManagerApp..ctor()
at Business.ManagersApp.UserManagerApp..ctor() in C:\Users\borah\Source\Repos
\Hospital\Business\ManagersApp\UserManagerApp.cs:line 53
at Web.Startup..ctor(IConfiguration configuration) in C:\Users\borah\Source\R
epos\Hospital\Web\Startup.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMat
cher.CreateInstance(IServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance
(IServiceProvider provider, Type instanceType, Object[] parameters)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startup
Type, 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 Web.Program.Main(String[] args) in C:\Users\borah\Source\Repos\Hospital\We
b\Program.cs:line 10
【问题讨论】:
-
您是否尝试过 IIS 应用程序池 - 高级设置“启用 32 位应用程序” - 设置为 False,如此处所述davidyardy.com/blog/ancm-in-process-start-failure---shenanigans
-
首先检查事件查看器是否有任何错误,然后确认您已安装网络核心托管 sdk。
-
运行一些基本诊断以排除常见问题,docs.jexusmanager.com/tutorials/ancm-diagnostics.html
-
我都检查过了,但仍然失败:(
-
添加我的 web.exe 错误