Recentemente mi è capitato di sviluppare un WCF custom per SharePoint 2010 che restituiva dati in formato JSON.
Funzionava tutto correttamente ma in alcune situazioni avevo un errore di autenticazione (HTTP 401). La cosa era strana in quanto riuscivo a debuggare il WCF fino alla fine del metodo e verificare che l'oggetto restituito aveva i dati correttamente impostati. Nonostante questo a volte ottenevo un 401.

Dopo varie indagini ho capito che il problema non era di autenticazione, ma dipendeva dai campi di tipo DateTime. Più precisamente dai limiti dei campi data. Infatti in alcuni casi venivano ritornati delle data con valori inferiori al 1/1/1970 che è la minima data gestibile in JavaScript. Imponendo valori di data superiori al 1970, tutto a ripreso a funzionare correttamente.

Vedi Date

Un altra possibile causa di problemi di autenticazione è avere una proprietà solo in get:

C#

[DataMember(Name = "beginDateJson")]
public string BeginDateJson
{
  get
  {
    //valore calcolato basato su altre proprietà
    return BeginDate.ToUnixTimeString();
  }
}
questo provoca un errore, per risolverlo basta aggiungere un set vuoto:

C#

[DataMember(Name = "beginDateJson")]
public string BeginDateJson
{
  get
  {
    //valore calcolato basato su altre proprietà
    return BeginDate.ToUnixTimeString();
  }
  set
  {
    // vuoto
  }
}
Tags:
C#235 Errori120 JavaScript184 JSON31 SharePoint497 SharePoint 2010224 WCF18
Potrebbe interessarti anche: