OpenRead工作时,Silverlight中的打开文件不起作用

时间:2011-12-29 16:05:49

标签: .net silverlight silverlight-4.0 file-io

浏览器内应用程序。

我有一个标准代码,用于打开“打开文件”对话框,然后使用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}}分享打开文件?

1 个答案:

答案 0 :(得分:2)

答案是:你做不到。 OpenFileDialog只会授予您对相关文件的读取权限。同样地,SaveFileDialog仅为您提供写访问权限。您无法控制共享级别,因此您无法指定共享ReadWrite。

在继续处理此错误之前,您需要先要求用户关闭Excel文件。