我一直在为公司的网站开发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中读取文件?
非常感谢,
罗布。
P.S。对于缺乏格式化的道歉,我洞穴男人,我不知道如何。
答案 0 :(得分: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指出的那样,这只适用于数据文件是静态的并且在编译时修复的情况。否则,您可以使用其他方法从网站下载文件(因为他链接到)。