代码之家  ›  专栏  ›  技术社区  ›  VoodooChild

system.io.fileinfo引发访问被拒绝本地文件异常

  •  1
  • VoodooChild  · 技术社区  · 14 年前

    我创建了一个Silverlight Web项目示例

    当我这样做时,我得到的是“访问被拒绝”:

    string fileName = "map.gif";
    FileInfo fileInfo = new FileInfo(fileName);
    

    如何授予Web项目对此文件夹/文件的访问权限?

    我在我的项目中添加了图像,真的在这里画了一个空白…

    5 回复  |  直到 14 年前
        1
  •  1
  •   AnthonyWJones    14 年前

    您不能使用 FileInfo 对象。而是创建一个URI来访问它。

    从你的问题中还不清楚你把文件放在哪个项目中。如果您已经将它放置在Silverlight项目中,那么它应该最终成为Xap中的内容。在这种情况下,你可以 StreamResourceInfo 适用于:

    StreamResourceInfo gifContentInfo = Application.GetResourceStream(new Uri("map.gif", UriKind.Relative));
    

    现在,您可以使用以下命令获取文件内容:

    Stream gifStream = gifContentInfo.Stream;
    

    另一方面,如果您已将该文件放入Web项目中,它将是网站中的标准静态文件。因此,你需要做典型的 WebClient 下载以获取。

    我认为你会遇到这个问题,因为它是一个gif文件;你知道它们不支持作为图像。

        2
  •  0
  •   µBio    14 年前

    不能在Silverlight中使用 Isolated Storage

        3
  •  0
  •   server info    14 年前

    您需要授予ASP.NET用户文件访问权限

    看看这个: http://www.codeproject.com/KB/aspnet/Ahmed_Kader.aspx

    或者使用ASP.NET为您提供的特殊文件夹 …附加数据

    你应该拥有你需要的权利…

        4
  •  0
  •   Aswin Ramakrishnan    14 年前

    我假设您正在尝试访问本地文件系统中的文件。

    如果是这样,您就不能访问这样的文件。Silverlight没有您期望的访问权限。如果要在运行时向Silverlight应用程序添加文件。您将需要使用Silverlight4,使用提升的权限运行浏览器。这也有一定的局限性。您只能访问特殊文件夹中的文件,如“我的文档”、“图片”、“音乐”等。有关以这种方式访问文件的详细信息,请参阅。你可以看看 John's tutorials 在Silverlight 4上,在Channel 9 msdn中提升权限。

    我也会怀疑你的文件信息用法。下面是使用简单的拖放功能获取文件数据的示例代码。

    private void list_Drop(object sender, DragEventArgs e)
    {
      FileInfo[] files = (FileInfo[])e.Data.GetData(DataFormats.FileDrop);
    
      for(int i=0;i<files.Length;i++)
      textblock.Text += files[i].Name;
    }
    

    您可以获取文件的属性,如“name”。您不会遇到任何拒绝访问的错误。不能访问“directoryname”、“fullname”等属性。原因是出于安全原因,它们被声明为SecurityCritical属性。提升权限的优势在于,您可以访问本地文件系统(特殊文件夹)以访问全名和DirectoryName属性,而无需任何异常。

    希望这有帮助

        5
  •  0
  •   Aswin Ramakrishnan    14 年前

    @卢卡斯。

    好。您可以使用Silverlight 4。看一看 this . 和 this