FileInfo..ctor (string fileName) lanzar una excepción: error en SL 4.0 o .NET 4.0?
-
20-09-2019 - |
Pregunta
La siguiente caso de prueba pasa en .NET 4.0:
var fiT = new FileInfo("myhappyfilename");
Assert.IsNotNull(fiT);
... pero falla en Silverlight 4.0 con el siguiente error:
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)
O bien el fallo es un error en SL 4.0, o la no fallo es un error en .NET 4.0. Alguien sabe cual es?
(Para el registro, estoy corriendo SL 4.0 en VS 2010 RC, que puede estar contribuyendo al problema).
Solución
Vea la documentación de MSDN para FileInfo para Siverlight 4:
cuando se le llama por un-confianza elevado aplicación , proporciona métodos de instancia para la creación, copia, borrado, en movimiento, y la apertura de los archivos, y ayudas en la creación de objetos FileStream. Esta clase no se puede heredar.
Es probable que su aplicación no se está ejecutando con elevada confiar . Si desea acceder a los métodos más estrechos, así tendrá que ser.
En cuanto a por qué está volviendo un nulo - que bien puede ser un error, posiblemente un SecurityException inapropiadamente propagada. Por otra parte, puede ser diseñado como - los documentos también están siendo pre-lanzamiento EDIT:.. La respuesta de Gabe es más probable correcta en este punto
Otros consejos
Ya que por lo general no puede acceder al sistema de archivos de Silverlight (se necesita una aplicación fuera de banda de plena confianza), se ve como SL4 está tratando de lanzar una excepción, pero está fallando porque el texto para esa excepción no está disponible en la versión beta SL4. Es de suponer que se podrían obtener la excepción correcta una vez SL4 se libera.