我試圖使用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? –