2010-07-25 58 views
4

我有一个Silverlight 4应用程序(plug ... http://audioorchard.com ... end plug)偶尔会在IsolatedStorageFileStream构造函数中抛出一个异常。从IsolatedStorageFileStream构造函数抛出的IsolatedStorage_Operation_ISFS错误是什么意思?

System.IO.IsolatedStorage.IsolatedStorageException:[IsolatedStorage_Operation_ISFS]参数:调试资源字符串不可用。关键和论据常常提供足够的信息来诊断问题。请参阅位于AudioOrchard.Client.Utility.DiskManager.CreateNewFile(String fileName,Boolean wasDiskSpaceRequested)处的System.IO.IsolatedStorage.IsolatedStorageFileStream..ctor(String path,FileMode mode,FileAccess access,FileShare share,Int32 bufferSize,IsolatedStorageFile isf)处的http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50524.0&File=mscorlib.dll&Key=IsolatedStorage_Operation_ISFS。 ...(在此输入的不是SL运行时代码)

堆栈跟踪中的网址没有提供任何帮助,也没有提供谷歌搜索。我在哪里可以了解有关IsolatedStorage_Operation_ISFS的更多信息以及导致它的原因?

回答

7

这意味着您正在Silverlight隔离存储中达到文件长度限制。对于独立存储的基本存储位置可以在一个很长的名称的路径 - 它看起来像:

C:\\Users\\kevind\\AppData\\LocalLow\\Microsoft\\Silverlight\\is\\1325qaxz.ekn\\xyro13wm.cn0\\1\\s\\qc4wuhalx4ciu4u5hbqqfohd3y3y4m1guyj5xuv5ml5y5qjbjmaaaeea\\f

(且可甚至更长的XP,里基为C:\ Documents和设置)

鉴于此,达到260个字符文件路径限制并不需要太多。基本路径加上内部路径(在独立存储器内)加上文件名必须小于260个字符。

我已经看到在这种情况下,两个不同的故障模式:

  1. 试图创建一个目录,总路径长度(基本路径加上新的路径)是超过260个字符。这会导致由IsolatedStorageFile引发的PathToLongException。创建目录

  2. 尝试使用IsolatedStorageFileStream创建文件,其中总路径长度(基本路径加内部路径加文件名)大于260个字符。这会导致IsolatedStorageFileStream构造函数引发IsolatedStorageException(IsolatedStorage_Operation_ISFS)。

据我所知,除了捕捉异常并继续进行之外,没有真正的解决方案来解决这个问题。这是Silverlight的一个不幸的限制。

有一个关于此问题的好文章:

http://msdn.microsoft.com/en-us/magazine/dd458794.aspx

0

其实没有构造函数IsolatedStorageFileStream相同参数列表:

System.IO.IsolatedStorage.IsolatedStorageFileStream..ctor(字符串 路径的FileMode模式,FileAccess的 访问,文件共享份额,的Int32 bufferSize,IsolatedStorageFile isf)

Int32 bufferSize参数实际上超过了这里。请检查documentation是否为IsolatedStorageFileStream构造函数。
我想有一些第三方组件尝试使用不支持的IsolatedStorageFileStream构造函数。

+0

是的,这似乎有点奇怪。看来堆栈跟踪在这里有点误导。在代码中,我实际上调用构造函数IsolatedStorageFileStream(String,FileMode,IsolatedStorageFile) – herbrandson 2010-07-30 06:23:13

0

我其实是有这个问题,并解决它,我明白我的Silverlight缓存。如果您使用Program Files - > Microsoft Silverlight并单击应用程序存储选项卡,则可以删除列出的任何或全部网站。我删除了有问题的网站,并在下次能够正确使用。

相关问题