FileInfo..ctor(string fileName)抛出异常:SL 4.0或.NET 4.0中的错误?

时间:2010-03-15 00:19:21

标签: .net-4.0 silverlight-4.0

以下测试用例在.NET 4.0中传递:

var fiT = new FileInfo("myhappyfilename");
Assert.IsNotNull(fiT);

...但在Silverlight 4.0中失败并出现以下错误:

System.ArgumentNullException: Value cannot be null.
Parameter name: format
   at System.String.Format(IFormatProvider provider, String format, Object[] args)
   at System.Environment.GetResourceString(String key, Object[] values)
   at System.IO.FileSecurityState.EnsureState()
   at System.IO.FileInfo.Init(String fileName, Boolean checkHost)
   at System.IO.FileInfo..ctor(String fileName)

失败是SL 4.0中的错误,或者非失败是.NET 4.0中的错误。有谁知道它是什么?

(为了记录,我在VS 2010 RC上运行SL 4.0,这可能导致了这个问题。)

2 个答案:

答案 0 :(得分:0)

由于您通常无法从Silverlight访问文件系统(您需要一个完全受信任的OOB应用程序),看起来SL4正在尝试抛出异常,但是失败了,因为该异常的文本在SL4测试版。一旦SL4被释放,大概你会得到正确的例外。

答案 1 :(得分:0)

有关Siverlight 4的信息,请参阅MSDN documentation for FileInfo

  

当被提升信任调用时   应用程序,提供实例方法   用于创建,复制,删除,   移动,打开文件和辅助工具   在创建FileStream对象时。   这个类不能被继承。

您的应用程序无法与elevated trust一起运行。如果你想访问那些受限制的方法,那就需要。

至于为什么它返回null - 可能是一个bug,可能是一个不正确传播的SecurityException。然后,它可能是按照设计 - 文档仍然是预先发布。编辑:gabe的答案在这一点上很可能是正确的。