我在这里遵循了这个指南:ShowInDisplayForm
但是,当我将我的Web应用程序发布到IIS 8.5时,它会关闭应用程序池,并且我的事件查看器会显示以下消息:
There was an error during processing of the managed application service
auto-start for configuration path:
'MACHINE/WEBROOT/APPHOST/mydomain.co.uk/'. The error message returned is:
'An initialization error occurred while trying to preload an application.
Exception: System.InvalidOperationException
Message: Well known object of type 'System.Web.Hosting.PreloadHost' already
exists in this App Domain.
StackTrace: at
System.Web.Hosting.HostingEnvironment.CreateWellKnownObjectInstance(String
assemblyQualifiedName, Boolean failIfExists)
at
System.Web.Hosting.HostingEnvironment.CreateWellKnownObjectInstance(String
assemblyQualifiedName, Boolean failIfExists)
at System.Web.Hosting.ApplicationManager.CreateObjectInternal(String appId,
Type type, IApplicationHost appHost, Boolean failIfExists,
HostingEnvironmentParameters hostingParameters)
at System.Web.Hosting.ProcessHost.PreloadApplicationIfRequired(String appId,
IApplicationHost appHostParameter, HostingEnvironmentParameters
hostingParameters, LockableAppDomainContext ac)
at System.Web.Hosting.ProcessHost.<>c__DisplayClass38_0.
<PreloadApplicationIfNotShuttingdown>b__0(Object o)'. The worker process will
be marked unhealthy and be shutdown. The data field contains the error code.
我无法解决这个问题,或者找出从哪里开始调试它。如果我之后手动启动应用程序池一切正常 - 它真的很烦人。任何建议表示赞赏。
答案 0 :(得分:1)
AHHHH。我找到了解决方案(好吧......无论如何,它对我有用)。这要归功于这篇伟大的文章:https://weblog.west-wind.com/posts/2013/oct/02/use-iis-application-initialization-for-keeping-aspnet-apps-alive
特别是,上面的Hangfire教程中没有提到的是需要:
添加应用程序初始化&#39;角色。在IIS 8.5上,它与链接文章的位置略有不同。它位于:Web服务器(IIS)&gt; Web服务器&gt;应用程序开发&gt;申请初始化
此外,我还需要确保启用“预加载”功能。国旗已经设定,其中没有。为此我在IIS中突出显示了我的网站,点击了“高级设置”&#39;在右侧面板中,将其设置在那里。
然后我尝试再次发布我的网站瞧....没有HTTP错误503!
<强>更新强>
这不是解决方案。它工作的唯一原因是因为我附加了调试器(DebugDiag),这似乎使它因某些原因而起作用!一旦我分离调试器,我就会得到同样的错误。
答案 1 :(得分:0)
选择的答案帮助了我。如果其他人遇到其他麻烦,结果我也没有在我的机器上安装正确版本的.NET;我的应用程序针对4.7,最新的我是4.5。安装完成后,一切正常。
答案 2 :(得分:0)
我将应用程序池上的快速故障保护最大故障数增加到20个左右。我不确定这是否是解决问题的最佳方法。