【问题标题】:.NET Core app targeting full framework - Stopped working in IIS针对完整框架的 .NET Core 应用程序 - 停止在 IIS 中工作
【发布时间】:2019-03-27 12:24:33
【问题描述】:

由于需要 Oracle 实体框架,我们有一个针对 net461 的 ASP.NET Core MVC 应用程序。 直到最近,这个应用程序在我们的 DEV 和 QA 服务器上都运行良好。

我们将其部署为一个独立的应用程序,但还在服务器上安装了 .NET Core 运行时和 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 帖子和文章都说这通常是由于服务器与客户端上安装的运行时版本不同。

  1. 这是独立的,因此运行时是捆绑的,所以我不确定这是问题所在。

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

  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

我们甚至将服务器恢复到这些问题开始之前的较早时间。

到目前为止,我们无法找到任何模式来说明某些部署何时/为什么会运行,而另一些会失败。有没有人可以提供一些意见?

【问题讨论】:

  • 听起来应用程序在启动过程中抛出异常。尝试打开已发布应用目录的命令提示符并运行dotnet MyApp.dll。如果您看到控制台窗口中记录了任何异常,请使用这些异常以及堆栈跟踪来更新您的问题。
  • 是.exe文件,所以没有.dll。如果我在本地尝试这个,它需要一分钟但最终会启动。如果我在服务器上尝试它,它只是挂起并且控制台窗口中没有显示任何内容。
  • 对不起。我读过它,但它并没有陷入困境。运行 exe 与我正在寻找的效果相同。如果它挂起,则可能是连接超时或其他原因。您可能需要在 Startup 类周围添加一些更广泛的日志记录。
  • 这不是一个坏主意。如果我在 web.config 中设置stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout",则会在此处创建日志文件,但永远不会写入。我将手动尝试一些File.WriteAllText()s,看看我是否无法获得任何东西。
  • ILoggerFactory 是一个托管服务,因此可以将其注入Startup(以及更具体的日志接口,例如ILogger<Startup>)。简而言之,您可以将ILogger<Startup> 参数添加到Startup 构造函数,将其保存到ivar,然后在ConfigureServicesConfigure 中使用它。这应该会让您的日志记录工作更加轻松。

标签: .net iis asp.net-core port


【解决方案1】:

在应用程序启动时,我们正在使用 FluentScheduler 安排一些事情。 On 的开始/结束时间一定会让图书馆感到困惑。它会导致它完全冻结而不会引发异常。删除/更改固定或问题的时间!

【讨论】:

  • 我有一个非常相似的问题。你是怎么解决的
  • 日志语句。将它们放在 Program.cs 和 Startup.cs 中的任何位置,并将内容记录到文件中。从那里我们只是查看了哪些记录和没有记录以缩小它停止的位置。
  • 但是我没有使用你提到的那个库。我将尝试使用日志
  • 这是个问题吗? services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1) 然后在部署了我的应用程序的带有 IIS 的服务器中,我安装了最新版本的 .NET Core 2.2 Runtime & Hosting Bundle for Windows (v2.2.3)
  • 我不这么认为,但我真的不确定。您可能想四处搜索,看看是否有人问过类似的问题,或者如果找不到,请提出您自己的问题。不过,据我所知,您所描述的内容应该仍然有效。不过,我又不是这里的专家。
猜你喜欢
  • 2016-11-09
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多