【问题标题】:C# Silverlight - XmlDictionary from UriC# Silverlight - 来自 Uri 的 XmlDictionary
【发布时间】:2012-06-30 20:56:30
【问题描述】:

我一直在为一家公司的网站开发 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 中读取文件?

非常感谢,

罗伯。

附:抱歉,我的穴居人,我不知道如何格式化。

【问题讨论】:

标签: c# xml silverlight filestream relative-path


【解决方案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 所指出的,这仅适用于数据文件是静态的并且在编译时固定的情况。否则,您可以使用其他方法从网站(如他链接到的)下载文件。

【讨论】:

  • 如果 XmlDictionary 非常静态,这很好。如果它应该更容易更新,您可以从 URL 中读取它,可能使用 WebClient,例如 c-sharpcorner.com/uploadfile/dhananjaycoder/…
  • 那个new StreamResourceInfo(uri) 构造函数不存在。 msdn.microsoft.com/en-us/library/ms602802(v=vs.95)。你的意思是Application.GetResourceStream(uri)msdn.microsoft.com/en-us/library/ms596994(v=vs.95)
  • @TimS。是啊,我做了。这就是我通过复制/粘贴编辑部分代码所得到的。我总是错过复制一些东西。 >
  • 不幸的是,我从中获取数据的文件非常动态,可能每隔一天就会自动更改一次;我以前尝试过使用 Tim 的方法,但无济于事 - XmlDictionaryReader 不喜欢它。我会再试一次,然后相应地投票:) 谢谢
猜你喜欢
  • 2021-07-31
  • 1970-01-01
  • 2011-04-14
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
相关资源
最近更新 更多