Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Windows服务可以';无法复制到文件共享_.net_File Io_Windows Services_Networking_Samba - Fatal编程技术网

.net Windows服务可以';无法复制到文件共享

.net Windows服务可以';无法复制到文件共享,.net,file-io,windows-services,networking,samba,.net,File Io,Windows Services,Networking,Samba,我有一个windows服务集,用于将文件从本地目录复制到samba共享 该服务通过UNC路径连接到服务器(即.\remoteserver\shareddir) 我已经以运行服务的用户身份登录,并且能够使用UNC路径在samba共享上复制文件和创建文件 但是,当运行该服务时,我会收到io异常,提示登录错误。我在那个盒子上运行了process monitor,观察服务,我可以看到它找到了UNC路径,但在尝试写入共享时出现了登录错误 这是使用普通的.net System.IO.File.Copy调用

我有一个windows服务集,用于将文件从本地目录复制到samba共享

该服务通过UNC路径连接到服务器(即.\remoteserver\shareddir)

我已经以运行服务的用户身份登录,并且能够使用UNC路径在samba共享上复制文件和创建文件

但是,当运行该服务时,我会收到io异常,提示登录错误。我在那个盒子上运行了process monitor,观察服务,我可以看到它找到了UNC路径,但在尝试写入共享时出现了登录错误

这是使用普通的.net System.IO.File.Copy调用

我不理解这些错误,因为当在同一个用户下登录时,我可以在共享上复制和创建文件

有什么想法吗

编辑:异常文本

主处理循环中的错误 (DoWork()):登录失败:未知 用户名或错误的密码

系统异常:上的错误 MyService.processExportTransferFileDirectory 和值:D:\Export, \远程服务器\intray, D:\Export\Archive--> System.IO.IOException:登录失败: 未知的用户名或错误的密码

在 System.IO.\uu错误.WinIOError(Int32 错误代码,字符串maybeFullPath)位于 System.IO.\uuu Error.WinIOError()位于 System.IO.File.Move(字符串 sourceFileName,String destFileName)
在 MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile(字符串 sourceFolder,字符串targetFolder, 字符串归档文件夹,字符串 根文件夹,日志类别,日志类别, 日志计数器日志计数器)--结束 内部异常堆栈跟踪---在 MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile(字符串 sourceFolder,字符串targetFolder, 字符串归档文件夹,字符串 根文件夹,日志类别,日志类别, 日志计数器(日志计数器) MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer(IDictionary`2 文件目录)在 MyService.Core.TimedWorkerProvider.DoWork()


在您的情况下,一个非常有用的工具是。只需以管理员身份运行它并添加以下筛选器:

Process Name is "your_process.exe" AND Operation is "CreateFile"

您将看到有关进程尝试使用的文件的详细信息。

我建议先映射驱动器,然后将文件复制到映射的驱动器,而不是共享驱动器

您可以使用dos net use命令映射驱动器。例如:

System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")
这将解决任何登录问题

如前所述,当我使用 与该服务使用的帐户相同 以身份运行时,我在复制方面没有问题 在共享上创建和创建文件 一分钟前被杀


您是否已在本地安全策略中将服务作为“登录为服务”权限授予正在运行的用户帐户???

它最终成为一个权限问题-在以另一个用户的身份运行服务(该用户是在samba共享上安装的)后,该服务在运行时没有出现问题,复制了多个文件


仍然不明白为什么当使用其他帐户时,我可以使用windows资源管理器在共享上复制/创建文件,但当服务在同一帐户下运行时,它根本无法访问共享:(

请发布您看到的异常。您的服务使用的是域帐户还是本地帐户?谢谢-我确实在运行它,结果是一样的。无法使用映射驱动器,因为服务不支持这种用法。我有其他服务以同样的方式设置(它们做其他工作)-它们的启动和运行都没有问题,因此我没有查看此权限。将进行检查。已检查,是的,用户帐户确实具有这些权限。