繁体   English   中英

在Windows Service C#中访问网络路径

[英]Accessing Network Path in Windows Service C#

我已经使用本地系统作为Account开发了Windows服务。 我已经使用了文件的网络路径

FileInfo fi = new FileInfo(@"\\epm-server\penDocuments_LabMeds\" + Convert.ToString(dr["mrn"]) + "\\SyncedXML\\" + Convert.ToString(dr["xmlfile"]));
if (!fi.Exists)
    boolFileNotFound = true;

从数据库构建的文件的动态路径。

当我在调试模式下运行Windows Service时,它工作正常,但是当我安装Windows Service时, fileNotExists返回TRUE总是就像文件不存在,但实际上它确实存在。

现在这让我很烦。 请帮助我为什么它不起作用。 它是服务器路径。 它已在我的PC中打开。

谢谢

您是否注意到SyncedXML( \\\\SyncedXML\\\\ )前后的双反斜杠? 这可能是导致您出错的原因。

此外,在这种情况下,我会使用string.Format来减少无意添加的多余字符:

var path = string.Format(@"\\epm-server\penDocuments_LabMeds\{0}\SyncedXML\{1}", dr[mrn], dr[xmlfile]);
var fi = new FileInfo(path);

编辑:

如果是与权限相关的,则很可能不允许您的本地系统帐户(在其上下文中运行服务)访问epm-server。

如果直接打开路径或在调试模式下运行服务,则该路径是可访问的,因为这是在用户上下文中发生的(例如YOURDOMAIN \\ vickyshazad ),并且允许您访问资源,而NT AUTHORITY \\ SYSTEM不是。

通常,对您开发的Windows服务拥有一个特殊的服务帐户,并仅向该用户确切授予所需的权限(最低特权),这是一个好习惯。 也许会向系统管理员咨询服务用户。

本地系统( NT AUTHORITY \\ SYSTEM )是一个特权较高的帐户,一般不建议使用( 请参见MSDN )。

大多数服务不需要如此高的特权级别。 如果您的服务不需要这些特权,并且它不是交互式服务,请考虑使用LocalService帐户或NetworkService帐户。

暂无
暂无

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

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