繁体   English   中英

使用C#中的BITS(后台智能传输服务)

[英]Using BITS (Background Intelligent Transfer Service) from C#

我想编写一些代码,使用BITS在同一服务器上的磁盘之间复制非常大的文件(第二个磁盘是SAN级别的clone \\ snapshot)。

我研究了BITS,因为我认为这是获取进度\\传输中完整数据的百分比以及恢复功能等的好方法

我有很多托管的Powershell,我想使用内置的BITS cmdlet会很麻烦,因为这将是一种超快速的方式,我可以编写包装程序来获取所需的东西,等等。不幸的是,我遇到了这个:

在非交互上下文中运行的进程(例如Windows服务)中使用* -BitsTransfer cmdlet时,可能无法将文件添加到BITS作业中,这可能导致挂起状态。 为了使作业继续进行,必须登录用于创建传输作业的标识。 例如,当在作为任务计划程序作业执行的PowerShell脚本中创建BITS作业时,除非启用任务计划程序的任务设置“仅在用户登录时运行”,否则BITS传输将永远不会完成。

通过模拟的Powershell运行空间执行任何操作都会引发以下错误:

由于用户尚未登录网络,因此未执行所请求的操作。 指定的服务不存在。 (来自HRESULT的异常:0x800704DD)”

我的Web服务以AppPoolIdentity的身份运行,需要时我会模拟。 这在托管的Powershell中不起作用是有道理的,但是有人能想到解决方法吗? 如果这不可能,我是否有其他选择?

我曾考虑过使用BITS Compact Server作为替代方案,但是该文档是古老的。

您是否考虑过使用robocopy? 使用/ ZB开关运行对我来说一直很好,并且可以使用/ J启用无缓冲I / O来提高性能。 对于输出,还要与/ ETA和/ TEE一起运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM