【发布时间】:2017-09-01 19:38:49
【问题描述】:
我们使用 .Net Core Web 模板在 VS 2017 中创建了一个应用程序。从那以后我们意识到我们实际上需要引用一些完整的框架包。
所以我们把目标框架改成了4.6.2。
但是,现在当 Web 应用程序部署到 azure 时,我一直收到错误消息:
HTTP 错误 502.5 - 进程失败 此问题的常见原因: 申请进程启动失败 应用程序进程开始但随后停止 应用程序进程已启动但未能侦听配置的端口 故障排除步骤: 检查系统事件日志中的错误消息 启用记录应用程序进程的标准输出消息 将调试器附加到应用程序进程并检查 欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?LinkID=808681
它似乎甚至无法启动,但我不确定我需要进行哪些更改才能使其正常工作。
当我发布它时,会在服务器上创建一个 web.config 文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--ProjectGuid: db77cdb1-05c4-450e-94d8-5dabc48c6d76-->
<system.webServer>
<handlers>
<add resourceType="Unspecified" modules="AspNetCoreModule" verb="*" path="*" name="aspNetCore"/>
</handlers>
<aspNetCore stdoutLogFile=".\logs\stdout" stdoutLogEnabled="true" processPath=".\Genesis.IdentityServer.exe"/>
</system.webServer>
</configuration>
我启用了日志记录。
天蓝色调试控制台上的事件日志报错如下:
<Event>
<System>
<Provider Name=".NET Runtime"/>
<EventID>1026</EventID>
<Level>0</Level>
<Task>0</Task>
<Keywords>Keywords</Keywords>
<TimeCreated SystemTime="2017-09-01T06:14:38Z"/>
<EventRecordID>868107718</EventRecordID>
<Channel>Application</Channel>
<Computer>RD0003FFC3731F</Computer>
<Security/>
</System>
<EventData>
<Data>Application: Genesis.IdentityServer.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: Microsoft.Net.Http.Server.WebListenerException at Microsoft.Net.Http.Server.ServerSession..ctor() at Microsoft.Net.Http.Server.WebListener..ctor(Microsoft.Net.Http.Server.WebListenerSettings) at Microsoft.AspNetCore.Server.WebListener.MessagePump..ctor(Microsoft.Extensions.Options.IOptions`1<Microsoft.AspNetCore.Server.WebListener.WebListenerOptions>, Microsoft.Extensions.Logging.ILoggerFactory) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite, Microsoft.Extensions.DependencyInjection.ServiceProvider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.IServiceCallSite, System.__Canon) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(Microsoft.Extensions.DependencyInjection.ServiceLookup.ScopedCallSite, Microsoft.Extensions.DependencyInjection.ServiceProvider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitSingleton(Microsoft.Extensions.DependencyInjection.ServiceLookup.SingletonCallSite, Microsoft.Extensions.DependencyInjection.ServiceProvider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.IServiceCallSite, System.__Canon) at Microsoft.Extensions.DependencyInjection.ServiceProvider+<>c__DisplayClass16_0.<RealizeService>b__0(Microsoft.Extensions.DependencyInjection.ServiceProvider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(System.Type) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(System.IServiceProvider, System.Type) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.IServiceProvider) at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureServer() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at Genesis.IdentityServer.Program.Main(System.String[]) </Data>
</EventData>
</Event>
<Event>
<System>
<Provider Name="IIS AspNetCore Module"/>
<EventID>1000</EventID>
<Level>0</Level>
<Task>0</Task>
<Keywords>Keywords</Keywords>
<TimeCreated SystemTime="2017-09-01T06:14:38Z"/>
<EventRecordID>868107937</EventRecordID>
<Channel>Application</Channel>
<Computer>RD0003FFC3731F</Computer>
<Security/>
</System>
<EventData>
<Data>Application 'MACHINE/WEBROOT/APPHOST/GENIDENTITYSERVER' with physical root 'D:\home\site\wwwroot\' failed to start process with commandline 'D:\home\site\wwwroot\Genesis.IdentityServer.exe ', ErrorCode = '0x80004005 : e0434352.</Data>
</EventData>
</Event>
</Events>
这让我很困惑,我不能简单地从我的 .net 核心应用程序中定位框架 462 吗?
编辑
我打开了详细错误,现在看到:
HTTP 错误 502.5 - 网关错误 指定的 CGI 应用程序遇到错误,服务器终止了进程。
最可能的原因: CGI 应用程序没有返回一组有效的 HTTP 错误。 由于父网关中的错误,充当代理或网关的服务器无法处理请求。
您可以尝试的事情: 使用 DebugDiag 对 CGI 应用程序进行故障排除。 确定代理或网关是否会导致此错误。
详细错误信息: 模块 AspNetCoreModule 通知 ExecuteRequestHandler 处理程序 aspNetCore 错误代码 0x00000000 请求的 URL http://GenIdentityServer:80/favicon.ico 物理路径 D:\home\site\wwwroot\favicon.ico 登录方法匿名 登录用户匿名
我在 WebHostBuilder().build 调用周围放了一个 try catch,这是记录的内容:
Access is denied at Microsoft.Net.Http.Server.ServerSession..ctor()
at Microsoft.Net.Http.Server.WebListener..ctor(WebListenerSettings settings)
at Microsoft.AspNetCore.Server.WebListener.MessagePump..ctor(IOptions`1 options, ILoggerFactory loggerFactory)
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitSingleton(SingletonCallSite singletonCallSite, ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureServer()
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
at Genesis.IdentityServer.Program.Main(String[] args)
【问题讨论】:
-
事件日志中的堆栈跟踪几乎无法读取,并且由于某种原因,没有与似乎是罪魁祸首的
WebListenerException关联的消息。我建议您在Main方法中使用 try-catch 包围对WebHostBuilder.Build()的调用,然后以某种方式记录抛出的任何异常,以便您可以读取它(将exception.ToString()写入日志)。您可能会收到WebListenerException的一个原因是该进程正在尝试绑定到无法访问或已在使用的端口。 -
我用我从 azure 的详细错误日志中看到的错误更新了问题