C# Silverlight 4资源流或Json Xml字典读取器中的明显错误
我在Silverlight 4中遇到了一个感觉像是bug的问题,因为我在MSDN文档中找不到任何说明这不应该工作的内容,但它正在使我的应用程序崩溃:C# Silverlight 4资源流或Json Xml字典读取器中的明显错误,c#,json,silverlight,C#,Json,Silverlight,我在Silverlight 4中遇到了一个感觉像是bug的问题,因为我在MSDN文档中找不到任何说明这不应该工作的内容,但它正在使我的应用程序崩溃: var info = Application.GetResourceStream(DocumentUri); using (var stream = info.Stream) using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryRead
var info = Application.GetResourceStream(DocumentUri);
using (var stream = info.Stream)
using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryReaderQuotas.Max))
{
// Content doesn't matter, could be empty.
}
此块的最终结果是来自MS.Internal.InternalMemoryStream.Flush的NotSupportedException
Stream.Flush
的文档记录有点不足,但这意味着在调用Flush
之前,封闭的读卡器应该调用Stream.CanSeek
和/或Stream.CanWrite
如果有其他人遇到过这个问题,我将非常感谢您提供的任何参考资料
编辑:我上传了一个正在崩溃的最小项目:我现在能够重现您的错误。我同意你的观点,这是Silverlight中的一个bug。很简单,对于从MS
或System
命名空间下的类中深层抛出NotSupportedException,没有其他合理的解释
尽管如此,如果我将document.json
文件的构建操作更改为Resource而不是Content,并将用于读取文件的URI更改为如下所示,我发现您的代码仍然有效:
var info = Application.GetResourceStream(new Uri("/HelloApp;component/document.json", UriKind.Relative));
我无法重现你的错误。它是特定于某些JSON文档的吗?我想可能是的,因为工厂方法确实需要一个流,但我根本没有读取流,所以我很惊讶这会产生不同。但是我会做更多的测试。发布DocumentUri
文件的内容。可能json标记无效。我确信该文件是有效的json,因为DataContractJsonSerializer可以解析它。我刚刚重新测试过,包含空对象“{}”的最小JSON文档将导致错误。正在寻找一个地方张贴我的样本项目。谢谢。不幸的是,出于许多原因,我无法使用资源包来实现此目的,但我感谢您的确认。我已尝试在此处报告此错误: