0

我一直在为一家公司的网站开发 Silverlight 应用程序,但遇到了一个问题。

到目前为止我一直在本地编程,现在我需要将程序发布到网站上;问题是 FileStream 只能访问具有提升权限的本地文件。

这是一段代码:

using (FileStream fileStream = new FileStream(@"E:\Users\LUPUS\Documents\Visual Studio 2010\Projects\Lycaon5\Lycaon5\acids.xdb", FileMode.Open))
 {
using (XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fileStream, XmlDictionaryReaderQuotas.Max))
  {
    //Read the XML file out.
  }
 }

在不更改与 XmlDictionaryReader 阅读器有关的任何内容的情况下 - 我如何才能从相对 Uri 中读取文件?

非常感谢,

抢。

Ps为缺乏格式道歉,我是穴居人,我不知道怎么做。

4

1 回答 1

1

编译时将文件与程序集一起嵌入。然后您可以将其作为资源流读取:http: //msdn.microsoft.com/en-us/library/cc296240%28VS.95%29.aspx

(确保您将文件嵌入Resource为该方法的类型)

您的代码可能看起来像这样来获取文件流:

Uri uri = new Uri("/MyAssemblyName;component/acids.xdb", UriKind.Relative);
StreamResourceInfo streamInfo = Application.GetResourceStream(uri);
Stream fileStream = streamInfo.Stream;

using (XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fileStream, XmlDictionaryReaderQuotas.Max))
{
    //Read the XML file out.
}

编辑:正如 Tim S 所指出的,这仅适用于数据文件是静态的并且在编译时固定的情况。否则,您可以使用其他方法从网站(如他链接到的)下载文件。

于 2012-06-30T21:05:54.800 回答