服务器共享文件访问被拒绝,访问被拒绝尝试打开共享文件夹上的文件

我正在处理一个具有输入文件夹以接收一些要处理的文件的应用程序。不幸的是,我们的客户选择UNIX作为他的操作系统来运行他的主要软件,他有共享文件夹,我们可以通过网络获取内容。他的主要软件写文件很奇怪:首先,它创建文件,然后将文件内容写入文件。我正在处理的应用程序在将文件放入文件夹并处理文件的时刻捕获该文件。在这种情况下,我们有一个“战斗”访问文件,因为主要软件正在编写内容,而我的应用程序试图打开它,看看它是否被另一个进程使用。每次我尝试打开文件时,都会抛出一个异常,但是我的catch语句没有捕获到异常。访问被拒绝尝试打开共享文件夹上的文件

当我尝试打开该文件,以查看是否它正在由另一进程使用如下因素代码用于:

public static void IsOpen(string file)

{

bool isOpen = true;

while (isOpen)

{

try

{

using (File.Open(file, FileMode.Open, FileAccess.Read, FileShare.None))

{

isOpen = false;

}

}

catch (FileNotFoundException exp)

{

throw new Exception(exp.Message);

}

catch (DirectoryNotFoundException exp)

{

throw new Exception(exp.Message);

}

catch (IOException)

{

isOpen = true;

Thread.Sleep(500);

}

}

}

看起来File.Open被抛出exeception和处理它的方法内。我在catchs声明中加入了一些日志,看它是否正常工作,我也只写了catch (Exception),但它也不起作用。

当我的应用程序试图打开该文件,正在由另一个进程使用,它是写在事件查看器此消息:Access to the path '' 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, Boolean useLongPath)

at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)

at Utilities.IsOpen(String strFile)

我认为这是引发UnauthorizedAccessException ,但我的应用程序是Windows服务,当服务重新启动时,它会正常工作,因为内容已经写入文件本身。

任何想法? 谢谢。

+0

您需要能够应对这种情况。你确实会得到一个UnauthorizedAccessException。您需要执行类似重试的情况,并在该情况下超时。 –

2013-05-02 13:55:08

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值