2013-03-25 12 views
6

Quindi desidero POST (o PUT) un oggetto complesso al server da un post AJAX utilizzando CORS. Sfortunatamente IE8 supporta solo l'invio di testo/plain quando si utilizza CORS e non application/json.Inserimento di testo/semplice come un oggetto complesso in WebAPI con CORS

Esiste un modo per implementare un gestore in WebAPI in testo di analisi personalizzato/invio semplice.

By oggetto complesso intendo

public void POST([FromBody] MyCustomObject myResponse) 
{ 
    return null; 
} 

Normalmente io avrei posto in qualche JSON con le intestazioni impostare in modo appropriato, ma a causa di restrizioni IE8 non appena si imposta l'intestazione non riesce con accesso negato in modo deve essere text/plain quindi quello che sto pensando di fare è inviare una stringa JSON ma chiamata text/plain (brutto lo so!) ma per mancanza di un'opzione migliore ...

risposta

8

Se l'applicazione WebAPI in realtà utilizza solo JSON, è possibile utilizzare questa soluzione in cui si risponde sempre con JSON e ignora la richiesta Content-Type:

How can I force asp.net webapi to always decode POST data as JSON

Da questo, vorrei suggerire questa soluzione:

Questo codice deve essere aggiunto a Application_Start o WebApiConfig.Register

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain")); 
config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter); 
config.Formatters.Remove(config.Formatters.XmlFormatter); 

racconta il programma di formattazione di JSON accetta il tipo di contenuto di testo normale e rimuove il form e i formattatori xml (anche se rimuoverli potrebbe non essere necessario)

+1

Grazie. Questo lavoro per me, e io lo uso per prevenire il preflight quando POST, DELETE e PUT. – JimiOr2

1

brutto, ma si può provare a modificare il contenuto -tipo di intestazione dal testo/semplice all'applicazione/json in un gestore di messaggi in modo che l'associazione dei parametri avvenga correttamente con JSON formattatore.

Problemi correlati