【问题标题】:.NET (2.0) service can't see network share.NET (2.0) 服务看不到网络共享
【发布时间】:2009-09-21 20:00:54
【问题描述】:

我有一个在 Windows 服务器上以 DOMAIN\username 运行的 C# .NET 服务,它需要访问网络共享 \\share\export docs$\

如果我登录到机器(DOMAIN\username)我可以看到共享,我什至将它映射到X: 并尝试使用它。我在 app.config 中设置了路径(并重新启动服务),如果我在 C: 上使用路径,它工作正常,但如果我尝试使用 \\share\export docs$\X:\,它看不到我需要的任何文件访问。

我尝试以本地用户和DOMAIN\username 身份运行该服务

任何想法我可能做错了什么?

编辑:来自日志的堆栈跟踪:

Could not find a part of the path 'X:\200909\11324709\coo.pdf'.
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
    at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)

在 System.Net.Mail.Attachment..ctor(String fileName)

【问题讨论】:

  • 你有日志吗?当服务尝试访问 UNC 时,您收到什么错误消息?
  • 检查共享中文件的权限。用户可能可以访问共享但不能访问其文件。
  • 您必须添加此共享才能访问文件。在命令行中使用net use,在Win32 API 中使用WNetAddConnection3
  • @Raj:添加了堆栈跟踪 @David:我可以作为用户读取/写入共享上的所有文件 @Anton:现在看看尝试在 C# 中执行此操作
  • 更新:所以在走 WNetUseConnection 路线后,疯狂地从网上复制和粘贴,然后破解它只是为了看看它是否可以工作(确实如此),我用 UNC 再试一次路径,它工作正常。我怀疑 IS 部门的某个人讨厌我。

标签: c# .net service network-share


【解决方案1】:

.Net 中的映射驱动器有点问题。但是,这种情况在这里出现了很多问题。最好指定 UNC 路径。

这与您提出的问题不完全相同,但这篇文章与您的问题相关,应该可以帮助您。

How do I access a file share programattically

【讨论】:

  • 看起来很有希望,谢谢。可能应该更努力地搜索。
  • 不用担心搜索困难。我的意思是这是一个好主意,但不要因为没有找到它而自责。这个问题的措辞不同,所以很难找到。我只是碰巧看到了那个,它在我的脑海里很新鲜。
【解决方案2】:

以域\用户名“应该”运行您的服务。

您确定该帐户具有“作为服务登录”权限吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多