面向完整框架的 .NET Core 应用程序 - 已停止在 IIS 中工作

.NET Core app targeting full framework - Stopped working in IIS

我们有一个 ASP.NET 核心 MVC 应用程序,目标是 net461,因为 Oracle 需要 Entity Framework。 直到最近,此应用程序在我们的 DEV 和 QA 服务器上都运行良好。

我们将其部署为一个独立的应用程序,但也在服务器上安装了 .NET Core 运行time 和 ASP.NET Core IIS 托管包。

最近,我们开始 运行 解决部署后应用程序无法启动的问题。在浏览器中,我们得到 502.5 Process Failure。 在服务器上,我们可以找到的唯一错误是 Windows 事件日志:Application 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/<appname>' with physical root 'D:\path\' created process with commandline 'D:\path\<appname>.exe ' but failed to listen on the given port '<randomport>'.

我发现的各种 SO 帖子和文章都说这通常是由于服务器和客户端安装的 运行time 版本不同。

  1. 这是独立的,所以 运行时间是捆绑在一起的,所以我不确定是不是这个问题。

  2. 我们没有更改开发 PC 或服务器上安装的内容,但已尝试卸载并重新安装服务器上的 运行time。

  3. 因为这针对的是完整框架 net461 .NET Core 版本是否重要?还是只有 .NET 版本重要?

我们有些人认为问题出在它获取一个端口来监听。我尝试在 Program.cs 中添加 .UseUrls() 并在 appSettings.json 中添加 Kestrel 端口,但没有任何区别,我们仍然遇到相同的错误。

更令人困惑的是,我们当前的构建 运行 现在在 QA 服务器上运行良好,但无法在 DEV 中启动。有时我们尝试发布并且它在一个环境中工作但在另一个环境中不起作用,有时它在两个环境中都失败了。我们遵循相同的部署步骤,唯一的区别是配置文件。

我们已经尝试了 <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest> 和没有。

我们已经尝试从 VS 和 dotnet publish.

发布

我们试过了net stop was /ynet start w3svc.

我们甚至将服务器恢复到这些问题出现之前的某个时间点。

截至目前,我们找不到任何模式 when/why 有些部署会 运行 而有些会失败。有没有人可以提供一些意见?

在应用程序启动时,我们正在使用 FluentScheduler 安排一些事情。 On 有一个 start/end 的时间,这一定会使图书馆感到困惑。它会导致它完全冻结而不抛出异常。 Removing/changing时间确定或问题!