我创建了一个示例Silverlight Web项目
当我这样做时,我得到'访问被拒绝':
string fileName = "map.gif";
FileInfo fileInfo = new FileInfo(fileName);
如何让web项目访问此文件夹/文件?
我将图片添加到我的项目中,真的在这里画了一个空白....
答案 0 :(得分:1)
您不使用FileInfo
对象访问已放置在项目中的文件。而是创建一个Uri来访问它。
从您的问题中不清楚您将文件放在哪个项目中。如果您已将其放在Silverlight项目中,那么它应该最终作为Xap中的内容。在这种情况下,您可以使用以下方式获取StreamResourceInfo
: -
StreamResourceInfo gifContentInfo = Application.GetResourceStream(new Uri("map.gif", UriKind.Relative));
现在您可以通过以下方式访问文件内容: -
Stream gifStream = gifContentInfo.Stream;
另一方面,如果您将文件放在Web项目中,它将是网站中的标准静态文件。因此,您需要执行典型的WebClient
下载才能获取它。
我认为你要解决这个问题,因为它是一个Gif文件;您知道它们不支持图像。
答案 1 :(得分:0)
您不能在Isolated Storage
之外的Silverlight中使用文件系统答案 2 :(得分:0)
您需要授予对asp.net用户的文件访问权限
检查一下: http://www.codeproject.com/KB/aspnet/Ahmed_Kader.aspx
或者使用asp.net为您提供的特殊文件夹 ... APP_DATA
应该拥有你需要的权利......
答案 3 :(得分:0)
我假设您正在尝试访问本地文件系统中的文件。
如果是这样,您无法访问此类文件。 Silverlight没有您期望的访问权限。如果要在运行时将文件添加到Silverlight应用程序。您将需要Silverlight 4,在浏览器中运行具有提升的priveleges。这也有一定的局限性。您只能访问特殊文件夹中的文件,如我的文档,图片,音乐等。有关访问文件的更多信息。您可以在第9频道MSDN中查看Silverlight 4提升版的John's tutorials。
我也怀疑你的FileInfo用法。以下是使用简单拖放功能获取文件数据的示例代码。
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;
}
您可以获取文件的属性,例如“名称”。你不会遇到任何拒绝访问的错误。您无法访问“DirectoryName”,“FullName”等属性。原因是出于安全原因,它们被声明为SecurityCritical属性。提升权限的优点是您可以访问本地文件系统(特殊文件夹)以访问FullName和DirectoryName属性,而没有任何例外。
希望这有帮助
答案 4 :(得分:0)