我试图使用Hangfire
排队处理通过HttpHandler
获取的数据。如何使用Hangfire作业排队处理来自ASP.NET HttpHandler的请求?
Hangfire服务器配置正确,并且可以正常工作,其功能类似于解释为here的简单功能。
我似乎无法找到一种方法来使用我的HttpContext
数据与Hangfire一起使用。
此代码:
public void ProcessRequest(HttpContext context)
{
var jobId = BackgroundJob.Enqueue(
() => Console.WriteLine("HELLO")
);
}
此代码不工作:
public void ProcessRequest(HttpContext context)
{
var jobId = BackgroundJob.Enqueue(
() => doServerSideWork(context)
);
}
public void doServerSideWork(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Request.InputStream.Position = 0;
var jsonString = String.Empty;
using (var inputStream = new StreamReader(context.Request.InputStream))
{
jsonString = inputStream.ReadToEnd();
}
context.Response.Write(jsonString);
}
我得到一个BackgroundJobClientException
:
{“财产检测自参照循环”上下文“与 'System.Web.HttpContext'。Path'ApplicationInstance'。”}
看完这个主题后,好像HttpContext
不能被序列化,这是作业管理Hangfire的第一步(参见上一个链接)。
如何使用Hangfire来处理我的HTTP请求?
这是永远不会工作。您不能只在这样的线程上传递HTTP上下文,并期望您可以在最后回写回响应。这种工作不应该使用Hangfire。你为什么不在控制器内部使用async/await? –