[英]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.