2017-08-10 1 views
0

Je suis confronté à ce problème de manière intermittente, mais pas pour chaque requête. Pouvez-vous s'il vous plaît m'aider à ce sujet. Voici mon code pour envoyer la demande à SalesForce reste api:API de Salesforce Rest (upsert): System.Web.Services.Protocols.SoapException: EXCEEDED_MAX_SIZE_REQUEST: la taille de la requête non authentifiée est trop grande

loginResult = _sfCachingManager.GetLoginResult(); 
if (_loginResult != null && _loginResult.userInfo != null) 
{  
    _sforceService.Url = _loginResult.serverUrl; 
    _sforceService.SessionHeaderValue = new SessionHeader(); 
    _sforceService.SessionHeaderValue.sessionId = _loginResult.sessionId; 
    Account account = _sfModelMapping.AccountMapping(agency); 
    UpsertResult[] result = _sforceService.upsert("Agency_ID__c", new sObject[] { account }); 

Quelques fois, quand j'ai essayé d'envoyer la demande, il génère comme exception:

System.Web.Services.Protocols.SoapException: EXCEEDED_MAX_SIZE_REQUEST: la taille de la requête non authentifiée est trop grande à System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (message SoapClientMessage, réponse WebResponse, Stream responseStream, boolean asyncCall) à System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Paramètres d'objet []

Toute aide serait appréciée.

Répondre

1

Vous obtiendrez cette erreur en envoyant des demandes au point de connexion, il est probable que vous partagez _sforceService entre les threads et quand l'un des décide qu'il doit se connecter, il définit l'URL sur le point de connexion, et un La requête simultanée sur un autre thread qui pense envoyer une requête au point de terminaison authentifié finit par l'envoyer au point de connexion. Examinez soigneusement comment vous partagez le _sforceService entre les threads.

+0

J'ai 50 demandes en permanence et sur eux 48 ont été réussis seulement 2 ont obtenu l'exception. Juste pour confirmation, je dois remplir une demande à temps ou autre chose? –

+0

Oui, nous avons des requêtes simultanées, mais nous récupérons une seule fois le résultat de login de Salesforce et nous le stockons dans le cache, et pour toutes les requêtes que nous examinons dans le cache, nous ne touchons pas Salesforce à chaque fois. –

+0

Si vous avez raison, une requête frappe une URL différente, c'est-à-dire l'URL par défaut du service Salesforce. Comment se débarrasser de cela? –