C#Windows服务凭据无效

时间:2013-08-23 16:34:40

标签: c# defaultnetworkcredentials

我有一个C#windows服务,用于从同一域上的另一台机器中提取一些文件。 当我将Windows服务作为控制台应用程序运行时,它从另一台计算机中提取文件。但是,将其作为Windows服务运行返回: 凭据无效:192.168.100.53(ServerNotFoundMIPException)

我尝试将服务登录更改为本地服务或网络服务,但没有成功。 以下是OnStart方法:     [PermissionSet(SecurityAction.Demand,Name =“FullTrust”)]     protected override void OnStart(string [] args)

在应用程序属性,安全部分,我选中了启用ClickOnce安全设置,这是一个完全信任的应用程序。

我使用的凭据类型是:

case CredentialType.Windows:
{
var nc = CredentialCache.DefaultNetworkCredentials;

我缺少什么,所以我的Windows无法从另一台计算机中提取文件?

1 个答案:

答案 0 :(得分:1)

我假设您正在从Windows共享中读取文件,例如\\COMPUTER2\Share\Path\file.ext

运行服务器的帐户必须能够

  1. 访问网络
  2. 使用域控制器进行身份验证
  3. 能够从网络登录到COMPUTER2(通过控制面板分配 - >管理工具 - >本地安全策略)。
  4. 拥有相关分享的访问权限。
  5. LocalSystem和LocalService在#1处失败。没有网络访问权。

    NetworkService为您提供#1,但在#2上失败 - 它是本地帐户,域控制器不知道它。

    您需要的是在特定的帐户下运行服务,而不是本地帐户,并将该帐户配置为能够远程登录到COMPUTER2并具有共享共享的读取权限。

    或者,您可以通过不需要身份验证的不同协议公开您的文件,例如: ftp或http。