【发布时间】: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