0

我有一个 C# windows 服务,用于从同一域上的另一台机器中提取一些文件。当我将 Windows 服务作为控制台应用程序运行时,它会从另一台计算机中提取文件。但是,将其作为 Windows 服务运行返回: Invalid credentials for: 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 无法从另一台计算机中提取文件?

4

1 回答 1

1

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

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

  1. 接入网络,
  2. 使用域控制器进行身份验证
  3. 能够从网络登录到 COMPUTER2(通过控制面板->管理工具->本地安全策略分配)。
  4. 有权访问相关共享。

LocalSystem 和 LocalService 在 #1 失败。没有网络访问权限。

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

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

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

于 2013-08-23T17:03:43.390 回答