代码之家  ›  专栏  ›  技术社区  ›  funkymushroom

如何在ASP.NET C中实现跨防火墙的后台耗时操作#

  •  1
  • funkymushroom  · 技术社区  · 15 年前

    摘要

    最初,我假设行的数量将是一个数量级,这有助于将最终PDF导入ASP响应流,并允许用户将文件下载到他们的计算机上,但较新的要求表明行的数量非常大,远远超出了我为其设计的规模。

    我目前的解决方案如下:

    1. 如果返回的行数大于配置的 threshold 值时,用户将收到一条消息,询问他们是否要在后台生成PDF,并在完成后通过电子邮件发送带有URL的通知,以便他们可以下载它们。

    2. DataTable s: 一个包含实际数据,另一个包含元数据,如在何处保存生成的PDF、名称和其他元类型信息。

    3. DataTable.WriteXML 在特定文件夹中生成“作业”文件。

    问题
    我真的想把作业xml文件存储在防火墙(共享网络文件夹)内的机器上,但出于安全原因,我似乎不能这样做。有人告诉我,我可能想用冒充的方式,但我试过了,但没能成功。

    我已经让读取作业文件并生成PDF的部分工作,而创建作业文件的部分工作(当我在防火墙内运行时),但是当我在防火墙外运行时,即使尝试模拟,它也不工作。(一直说“找不到网络位置”。

    问题:
    我这样做对吗?
    如何跨防火墙写入这些文件?
    有什么设计想法或建议吗?

    提前谢谢。

    2 回复  |  直到 15 年前
        1
  •  1
  •   H. den Breejen    15 年前

    你至少可以做跨防火墙的http吗?然后不要创建XML文件,而是调用防火墙内的webservice。理想情况下,此web服务也不会创建XML文件,而是将数据放入消息队列中。MSMQ在这里可能很有用。 然后,PDF生成器将从该队列中读取XML。 这样就不会遇到生成器获取尚未完成的文件的情况。而且您不会浪费时间和资源来轮询文件。

    希望这有帮助。

        2
  •  0
  •   funkymushroom    15 年前

    我解决这个问题的方法是创建一个名为 在我们的数据库里。

    此表包含 用于运行报表的条件 以及 所需的模板文件夹 文件 ,和 目标文件夹 文件名 对于生成的PDF。

    PDF发电机 )它从这个表中读取,并为每一行创建一个单独的线程来执行PDF生成。生成PDF后,它会将电子邮件发送到电子邮件地址(也包含在表中)。

    然后我有一个windows计划的任务,它运行 PDF发电机
    这不是主意,但它确实起作用了。

    最近的一个更新是他们想要一些能触发 PDF发电机 每当一个工作排被创建…我想我将不得不做更多的思考。