2010-05-27 4 views
0

J'ai une page Web client qui envoie un objet json volumineux à un service proxy sur le même domaine que la page Web.Envoyer des données JSON volumineuses à WCF Rest Service

Le proxy (un gestionnaire ashx) transmet ensuite la demande à un service de repos WCF. Utilisation d'un objet WebClient (objet standard .net pour effectuer une requête http)

Le JSON arrive au proxy via un POST jQuery sur la page Web du client.

Toutefois, lorsque le proxy transmet au service WCF je reçois une demande incorrecte - Erreur 400

Cela ne se produit pas lorsque la taille des données JSON est petit

Le regard du contrat de service WCF comme celui-ci

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
[OperationContract] 
CarConfiguration CreateConfiguration(CarConfiguration configuration); 

Et le DataContract comme celui-ci

[DataContract(Namespace = "")] 
public class CarConfiguration 
{ 
     [DataMember(Order = 1)] 
     public int CarConfigurationId { get; set; } 
     [DataMember(Order = 2)] 
     public int UserId { get; set; } 
     [DataMember(Order = 3)] 
    public string Model { get; set; } 
     [DataMember(Order = 4)] 
     public string Colour { get; set; } 
     [DataMember(Order = 5)] 
     public string Trim { get; set; } 
     [DataMember(Order = 6)] 
     public string ThumbnailByteData { get; set; } 
     [DataMember(Order = 6)] 
     public string Wheel { get; set; } 
     [DataMember(Order = 7)] 
     public DateTime Date { get; set; } 
    [DataMember(Order = 8)] 
    public List<string> Accessories { get; set; } 
    [DataMember(Order = 9)] 
     public string Vehicle { get; set; } 
    [DataMember(Order = 10)] 
    public Decimal Price { get; set; } 
} 

Lorsque le champ ThumbnailByteData est petit, tout est OK. Quand il est grand, je reçois l'erreur 400

Quelles sont mes options ici?

J'ai essayé d'augmenter le réglage de configuration MaxBytesRecived mais cela ne suffit pas

Toutes les idées?

+0

[Comment envoyer un JSONObject à un service REST] [1] [1]: http://stackoverflow.com/questions/3022566/how-to-send-a-jsonobject-to-a-rest-service#autocomment15830239 – rChavz

+0

Est-ce vous utilisez WebServiceHostFactory? Si oui, consultez [ce post] (http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4a070ac4-442a-4f1a-bd05-f5057417c4e3). – TylerOhlsen

Répondre

0

Je voudrais également tordre maxStringContentLength et maxBytesPerRead. Assurez-vous également que quelle que soit la configuration de liaison que vous avez configurée, vous l'utilisez réellement aux bons endroits.

Ce fil capte assez bien toutes les choses qui peuvent mal tourner lorsque vous avez affaire à une grande chaîne en entrée de message WCF, donc je suivre les conseils ici: Sending large strings to a WCF web service

Questions connexes