c# - 在 IIS 上启动 .NET Core Web API 时出错:“应用程序正在 IIS 进程内运行,但未配置为使用 IIS 服务器”
问题描述
我已经将.NET Core
2.2 API 发布到IIS
v.10 并且由于某种原因它响应 500!
我试过了
- stdoutLogEnabled="true" (没有生成日志文件)
- app.UseDeveloperExceptionPage(无)
- dotnet.exe x.dll 其中 x 是项目名称(说:没有配置监听端点。绑定到http://localhost:5000)然后它在 5000 而不是 IIS 上的指定端口上完美运行
我会很感激你的建议。谢谢
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
launchSettings.json
文件:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5694",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"x": {
"commandName": "Project",
"applicationUrl": "http://localhost:5694",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
启动:
public Startup(IConfiguration configuration, ILoggerFactory loggerFactory)
{
NLog.LogManager.LoadConfiguration(String.Concat(Directory.GetCurrentDirectory(), "/nlog.config"));
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("CorsPolicy");
app.UseMvc();
}
我已经重新安装了.NET Core
捆绑包,我从以下位置得到了这个stdout
:
Application startup exception: System.InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.
at Microsoft.AspNetCore.Server.IIS.Core.IISServerSetupFilter.<>c__DisplayClass2_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
crit: Microsoft.AspNetCore.Hosting.Internal.WebHost[6]
Application startup exception
System.InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.
at Microsoft.AspNetCore.Server.IIS.Core.IISServerSetupFilter.<>c__DisplayClass2_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
dbug: Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer[2]
Failed to locate the development https certificate at '(null)'.
dbug: Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer[1]
Unable to locate an appropriate development https certificate.
dbug: Microsoft.AspNetCore.Server.Kestrel[0]
No listening endpoints were configured. Binding to http://localhost:5000 by default.
Hosting environment: Production
Content root path: C:\inetpub\wwwroot\VetWorkAdmin
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4]
Hosting started
dbugNow listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
: Microsoft.AspNetCore.Hosting.Internal.WebHost[0]
Loaded hosting startup assembly VetWork.Admin
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[0]
Loaded hosting startup assembly Microsoft.AspNetCore.Server.IISIntegration
解决方案
如果您在将应用程序作为 Azure 应用程序服务托管时遇到这种情况
添加这个:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
在下面
<TargetFramework>netcoreapp3.1</TargetFramework>
在您的主机*.csproj
文件中。