浏览器内应用程序。
我有一个标准代码,用于打开“打开文件”对话框,然后使用dlg.File.OpenRead()
读取文件。现在,如果使用Excel打开该文件,则会出现问题。开放失败,因为内部确实如下:
public FileStream OpenRead()
{
new FileIOPermission(FileIOPermissionAccess.Read, this.FullPath).Assert();
return new FileStream(this.FullPath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, false);
}
要访问在Excel中打开的文件,您必须使用FileShare.ReadWrite
。好的,有Open
方法,所以我写道:
dlg.File.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
它给出错误:“不允许文件操作。拒绝访问路径'xyz'”。我检查了Open
内部的作用:
public FileStream Open(FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(this.FullPath, mode, access, share);
}
除了请求FileIOPermission
之外几乎相同,而Open
又是内部的,您无法在代码中使用它。
所以问题是,如何使ReadWrite
工作?或者如何使用{{1}}分享打开文件?
答案 0 :(得分:2)
答案是:你做不到。 OpenFileDialog
只会授予您对相关文件的读取权限。同样地,SaveFileDialog
仅为您提供写访问权限。您无法控制共享级别,因此您无法指定共享ReadWrite。
在继续处理此错误之前,您需要先要求用户关闭Excel文件。