c# - Asp.Net Core 防止控制台应用程序关闭
问题描述
我们有一个内置在 IIS 上的 asp.net core 2.0 的 Web 应用程序。从这个应用程序中,我们正在调用一个控制台应用程序,该应用程序执行来自数据库的排队请求。
问题是应用程序被很少人使用,因此它和控制台进程执行很长时间的处理。但是当 Web 应用程序关闭时,此控制台应用程序会自动停止。从事件日志中,我们得到以下输出。(来源:IIS AspNetCore 模块)
发送关闭 HTTP 消息以处理“3548”并收到 HTTP 状态“202”。
我们尝试将 Web 应用的 StartMode 设置为始终在 IIS 应用程序池高级设置中运行。但是,当一段时间后没有人使用该应用程序时,它仍然会停止。
有什么解决办法吗?
解决方案
您似乎错误地解决了问题。我不会从 Web 应用程序调用控制台应用程序。相反,理想情况下,您应该创建一个后端服务(例如:带有 .NET Core 的 Windows 服务),它会定期监控您的队列表并逐步对其进行处理。
这将使您的代码模块化(参考SOLID 原则)。它还将缓解您在与 Web 应用程序相同的进程中运行控制台应用程序时遇到的问题。
推荐阅读
- php - 将数据从 curl 传递到 codeigniter 上的视图
- java - JSP SQL INSERT 使用 Timestamp 和prepared statement 格式不正确
- android - Ubuntu14.04 第一次在 QCOM 平台上制作整个 Android 8.1 或 9 项目失败并出现 abl.elf
- c# - 使用 HtmlAgilityPack 执行脚本
- java - Eclipse 氧气在模块信息文件中给出语法错误警告
- rust - 当所有权可能在运行时移动时,Rust 编译器如何知道何时调用 drop?
- python - Django 项目立即显示处理后的数据
- c++ - 如何在 C++ 向量中的奇数元素前面添加值 -1,我在使用插入函数时遇到问题
- jwt - localstorage 值仅在页面重新加载后可见
- javascript - 在php中使用一个函数数组到另一个函数