gpt4 book ai didi

.net - 防止 IIS 在任务结束前杀死它

转载 作者:行者123 更新时间:2023-12-04 02:59:17 24 4
gpt4 key购买 nike

我正在构建一个日志库,将所有内容存储在 Azure 表上。写入该表显然需要很多时间(永远不会超过 1 秒,但它仍然太多让用户等待),因此 Log 方法返回一个 LogResult 实例,这里是类

public class LogResult
{
public string Id { get; set; }
public Task LoggingTask { get; set; }

public LogResult(string id, Task task)
{
Id = id;
LoggingTask = task;
}
}

这是 Log 方法的完成方式
return new LogResult(id, Task.Factory.StartNew(() => 
DoLogInAzure(account, id, exception, request))
);

让调用者可以选择等待它完成(例如,如果它是一个控制台应用程序)。我面临的问题是 IIS 在向用户返回响应之前不应该等待它......如果我不等待它,IIS 并不总是执行任务。这个想法是向用户显示一条消息“......如果你联系我们,一定要提到你的问题编号,XXX”,不要让他等到日志条目被写入。

有没有办法强制 IIS 等待任务完成,即使它返回了响应?我想我可能需要编写一个异步处理请求的 Windows 服务,但看起来只是添加一个日志条目需要做很多工作......特别是如果我可以强制 IIS 等待它。

感谢您的任何想法!

最佳答案

This post Phil Hack 谈到在 ASP.NET 应用程序中运行后台任务。

关于.net - 防止 IIS 在任务结束前杀死它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com