gpt4 book ai didi

paypal - ASP.NET Core 2 : Entity Framework Context is disposed too early in asynchronous PayPal IPN. 如何在以后的线程中取回它?

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:48 25 4
gpt4 key购买 nike

我有一个端点正在接收来自 PayPal 的 IPN 事件。这是直接从他们的文档中手动修改的 POST 操作:

    [HttpPost]
public IActionResult Receive()
{
IPNContext ipnContext = new IPNContext()
{
IPNRequest = Request
};

using (StreamReader reader = new StreamReader(ipnContext.IPNRequest.Body, Encoding.ASCII))
{
ipnContext.RequestBody = reader.ReadToEnd();
}

List<KeyValuePair<string, string>> ipnVarsWithCmd = ipnContext.RequestBody.Split('&')
.Select(x => new KeyValuePair<string, string>(x.Split('=')[0], x.Split('=')[1])).ToList();

//Fire and forget verification task -- ** THIS **
Task.Run(() => VerifyTask(ipnContext, ipnVarsWithCmd));

//Reply back a 200 code
return Ok();
}

问题是指示的行。这是一个“即发即弃”的路由,并且是异步执行的。当 Action 完成并返回 Ok 时,我假设从 Controller 注入(inject)的 Entity Framework 上下文:

public class IPNController : Controller
{
private readonly EFContext _context;


public IPNController(EFContext context)
{
_context = context;
}
}

... 被处置?根据我的日志,它看起来像。

与此同时,我让第二个线程执行 IPN 请求的实际跑腿工作,这需要 EFContext 存在。

我在这里缺少一种模式吗? (请记住,虽然我不是 .NET 的新手,但我是 .NET Core 的新手)

或者有什么方法可以“取回”以便我可以使用它吗?


更新:

您可能会发现我对上下文的初始化很有用:

公开课启动 { public Startup(IConfiguration配置) { 配置=配置;

    public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{

services.AddDbContext<EFContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

}

}

最佳答案

改变:

Task.Run(() => VerifyTask(ipnContext, ipnVarsWithCmd));

await Task.Run(() => VerifyTask(ipnContext, ipnVarsWithCmd));

和方法声明:

public async Task<IActionResult> Receive()

同时将 IPNContext 包装到 using block 中,以便在不需要时进行处理。

关于paypal - ASP.NET Core 2 : Entity Framework Context is disposed too early in asynchronous PayPal IPN. 如何在以后的线程中取回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51458730/

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