在远程服务器中创建文件夹时出错
Posted
技术标签:
【中文标题】在远程服务器中创建文件夹时出错【英文标题】:Error while creating folder in remote server 【发布时间】:2011-09-30 05:15:51 【问题描述】:您好,我有一个用于在 .net 中的远程服务器中写入文件的代码。当我将输出路径保留为本地驱动器时 - 代码工作正常并创建文件夹和文本文件。但是当我指向远程服务器时,出现以下错误:
System.UnauthorizedAccessException: Access to the path '\\ServerName\FolderTest\FolderTest1\AB.txt' is denied.
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)
at ...
如果您需要更多信息,请告诉我
【问题讨论】:
必问问题:您是否有权创建文件夹/文件? 要添加到@Bobby 的评论中,远程操作时您是否有权限。即您可以在本地系统上打开资源管理器,导航到 \\ServerName\FolderTest\.... 并创建一个文件夹/文件吗? @James Deville:是的,我可以从资源管理器中打开该文件夹,并且该文件夹是共享的 你能打开和创建吗?创建是与列表文件不同的权限 【参考方案1】:您可能需要在要保存文件的文件夹上为正确的用户设置权限。 这篇文章可能会给你答案:
Link - System.UnauthorizedAccessException
【讨论】:
【参考方案2】:您在哪个环境中执行您的代码? Winforms、Web 表单还是 Win 服务? 对于所有这些情况,有不同的方法来解决这个问题:
WinForms - 默认情况下,您的代码在您的凭据下执行,因此您的帐户必须具有远程服务器上 creatif 文件夹的权限。 WebForms - 那么您的代码默认在本地 IIS 用户下执行,如果您使用impersonation
,则在您的帐户下执行,因此该帐户必须具有远程服务器上 creatinf 文件夹的权限。
Win 服务 - 然后您的代码在本地服务、本地机器、网络服务或此服务的某些用户 (look here for more info) 下执行,因此此帐户必须具有远程服务器上 creatif 文件夹的权限。
【讨论】:
因此请检查 iis 帐户或启用模拟以提供来自 Windows 的用户访问权限。【参考方案3】:代码现在可以正常工作了。问题是访问权限。我的代码写入文件夹的凭据未添加到文件夹安全选项卡中。添加到它之后。有效。感谢@James Deville、@VMAtm 和 @Razvan Panda :)
【讨论】:
以上是关于在远程服务器中创建文件夹时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 Dataflow 中创建作业时出错(当前用户不能充当服务帐户)
使用Flysystem和ZipAdapter在Symfony4中创建ZIP文件时出错