[转].Net Core Web应用发布至IIS后报“An error occurred while starting the application”错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转].Net Core Web应用发布至IIS后报“An error occurred while starting the application”错误相关的知识,希望对你有一定的参考价值。

本文转自:http://www.cnblogs.com/TomGui/p/6438686.html

An error occurred while starting the application.

.NET Core X64 v4.1.1.0    |   Microsoft.AspNetCore.Hosting version 1.1.0-rtm-22752    |    Microsoft Windows 6.3.9600

报这个错,一脸懵逼,环境都按官方文档配置正确了,怎么办?

1.修改web.config文件,stdoutLogEnabled改为true,如下:

<aspNetCore processPath="dotnet" arguments=".\\Dialysis.WebApi.dll" stdoutLogEnabled="true" stdoutLogFile=".\\logs\\stdout" />

 

补充一点,这个文件是在发布之后的文件里,如果没有单独配置发布文件。
就在\\bin\\Debug\\netcoreapp1.1  里面,在根目录下有web.config文件。
注: 不在源文件的根目录下面。

另外,需要手动建 这个 logs 文件夹,因为iis不会给你自动创建。

我出这个问题的原因也是因为项目在startup的时候没有读到 nlog.config这个文件导致的错误。

在开发环境中,把这个文件的属性配置成“复制到输出目录:始终复制” 和 “生成操作:内容” 就可以了。

 

2.再次打开网站,还是报上述错误,别急,查看发布根目录发现多了一个Logs文件夹,打开里面的stdout_xxx.log文件

Application startup exception: System.IO.FileNotFoundException: Could not find file \'G:\\FTP\\DialysisWebApi\\Dialysis.WebApi.xml\'. File name: \'G:\\FTP\\DialysisWebApi\\Dialysis.WebApi.xml\'    at System.IO.Win32FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)    at System.IO.Win32FileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)    at System.Xml.XmlSystemPathResolver.GetEntity(Uri uri, String role, Type typeOfObjectToReturn)    at System.Xml.XmlTextReaderImpl.FinishInitUriString()    at System.Xml.XmlTextReaderImpl..ctor(String uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver)    at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)    at System.Xml.XmlReader.Create(String inputUri)    at System.Xml.XPath.XPathDocument..ctor(String uri, XmlSpace space)    at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenOptions.<>c__DisplayClass24_0.<IncludeXmlComments>b__0()    at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenOptions.CreateSwaggerProvider(IServiceProvider serviceProvider)    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider)    at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider)    at Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)    at Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)    at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass3_0.<UseMiddleware>b__0(RequestDelegate next)    at Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build()    at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() Hosting environment: Production Content root path: G:\\FTP\\DialysisWebApi Now listening on: http://localhost:22365 Application started. Press Ctrl+C to shut down.

 

发现缺少文件,把文件复制到发布根目录下就解决了

 

发布至IIS微软官方文档

 

以上是关于[转].Net Core Web应用发布至IIS后报“An error occurred while starting the application”错误的主要内容,如果未能解决你的问题,请参考以下文章

使用iis反向代理.net core应用程序

net core web 能部署到iis7么

ASP.NET Core部署系列一:发布到IIS上

调试在 IIS 中运行的 ASP.NET Core 应用程序

.NET Core - 在 IIS 上使用 Windows 身份验证从 MVC 应用程序调用 Web API 导致 HttpRequestException 401(未经授权)状态代码

从 IIS 上的 ASP.NET Core 应用程序请求超时