Directory.CreateDirectory问题与UNC路径

时间:2012-02-21 21:08:16

标签: c# file-io windows-services directory

我在特定帐户下运行Windows服务。该服务在某个已配置的路径上创建一个文件夹,然后将消息记录到该文件夹​​。

配置的路径是UNC路径,但已映射。当我在测试服务器上部署服务时,我收到错误 - “找不到路径的一部分'Z:\<some folder>'。

所以要清楚

Server1 - server on which service is insalled and running under `<Domain1>\<User1>` account
Server2 - \\Server2\LogMessages

<Domain1>\<User1> account has full permissions on \\Server2\LogMessages. 
Also \\Server2\LogMessages path has been mapped to "Z:\" on Server1.

我尝试记录运行代码的线程标识,并添加代码以记录

Thread.CurrentPrincipal.Identity.Name

线程的标识名称返回空白。我认为它应该是运行Windows服务的帐户(在本例中为“Domain1 \ User1”)。

我很困惑,需要帮助才能了解发生了什么。感谢。

2 个答案:

答案 0 :(得分:0)

该服务在特定用户(服务或系统)下运行,而不是在特定用户下运行。这是一个常见的错误,因为服务似乎在特定用户(启动它的用户)下运行 Z:映射到特定用户帐户,服务无法看到它。 我建议使用绝对路径或通过文件系统或Tcp / IP进行通信。

答案 1 :(得分:0)

正如@Mudx所指出的那样,这对UNC路径来说并不是一个问题,因为映射驱动器与帐户绑定是一个问题。映射将保存在用户的注册表配置单元中。依赖映射驱动器的另一种方法是让您的服务读取配置文件以确定它应该记录的位置。它可以像带有单行的文件一样简单,也可以在service.exe.config文件中添加属性,也可以创建一个xml文件,以后也可以用来为服务配置其他属性。