Se elaborando documenti e proprietà su SharePoint (2007) vi capitasse un errore come questo:
Microsoft.SharePoint.SPInvalidPropertyException: Date Times before 1/1/1970 are not supported.
Allora il problema potrebbe essere quello capitato anche a me oggi.
Il mio codice eseguiva l’upload di un documento su SharePoint e contestuale valorizzazione delle sue proprietà, il tutto tramite il metodo Add dell’oggetto SPFolder.
Se fra le proprietà c’è una data allora come valore è bene passare quello ottenuto dalla funzione SPUtility.CreateISO8601DateTimeFromSystemDateTime, ovvero una stringa con la rappresentazione UTC della data (formato ISO8601, ovvero yyyy-mm-ddThh:mm:ssZ).
Il codice corretto è il seguente.
' Crea una Hashtable delle proprietà
Dim myProps As New Hashtable()
Dim propName As String = "MyDatePropName"
' Imposta come valore una stringa con il formato UTC, ottenuta come segue:
Dim propValue As Object = SPUtility.CreateISO8601DateTimeFromSystemDateTime(New DateTime(1950, 1, 1))
' ... invece di: Dim propValue As Object = New DateTime(1950, 1, 1)
myProps.Add(propName, propValue)
' Recupera l'oggetto SPFolder dall'oggetto SPWeb corrente
Dim oFolder as SPFolder = myWeb.GetFolder(myFolderURL)
' Aggiunge il file con le proprietà
Dim objDestFile as SPFile = objDestFolder.Files.Add(myFolderURL & "/" & myFileName, myDocumentSourceStream, myProps)
Due osservazioni:
- Passando la data nuda e cruda (il datetime) si ha un errore per date inferiori all’1/1/1970, mentre per date successive funziona.
- Passando una stringa che non sia una data non succede nulla… nel senso che non c’è eccezione, il documento viene caricato e la proprietà resta vuota
Note: Grazie a Gabriele per i suggerimenti!