gpt4 book ai didi

asp.net-mvc-3 - MVC3 将 ControllerContext 传递给线程?

转载 作者:行者123 更新时间:2023-12-04 10:53:35 26 4
gpt4 key购买 nike

我在我的 MVC3 应用程序中使用 Rotativa 将 pdf 生成到内存流中,然后作为电子邮件附件通过电子邮件发送出去。这工作正常,但速度很慢(只有 1 个用户约 5-7 秒),所以我一直试图将它放入一个单独的线程中,这样用户就不会陷入巨大的延迟。

我一直面临的问题是 Rotativa 需要 Controller 上下文将数据生成到内存流中,这意味着如果您尝试将其放在单独的线程中并向用户返回通知,则上下文将被处理,并且pdf 生成将失败。

不幸的是,我在服务器端进行了电子邮件验证检查,并在适当的情况下返回真/假,假将提示用户修复它并重试。这意味着我不能假设电子邮件总是有效的(我可以通过 jquery 来完成,但如果他们关闭它并尝试提交,他们将不会收到错误消息)。

到目前为止,我已经尝试过:

  • 创建一个新线程并在
  • 中传递上下文
  • 通过将上下文复制到新变量来复制上下文
  • 序列化上下文,将流传递给新线程并反序列化(不幸的是上下文不可序列化)

  • 有没有人有其他想法?

    最佳答案

    这是我在后台运行一个带有上下文的长进程的方法。我正在使用由数据库支持的自定义 session 。您需要将您需要的任何值传递到“后台”操作中。

    using (var client = new WebClient())
    {
    var values = new NameValueCollection
    {
    { "sessionid", DataSession.Id.ExtractSid() }
    };
    client.UploadValuesAsync(new Uri(Url.AbsoluteAction("ResultsCallback", "Quote")), values);
    }

    关于asp.net-mvc-3 - MVC3 将 ControllerContext 传递给线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471746/

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