2012-04-15 5 views
1

J'ai créé un service pour recevoir des fichiers volumineux. Après cela, je l'ai publié sur mon IIS7 local. Après cela, j'ai créé un client de test avec une référence de service. Lorsque j'essaie d'envoyer un fichier volumineux au serveur, j'ai: Mauvaise demande (400).Service WCF 400 mauvaise demande

Traçage de service de cette exception: Le quota maximal de taille de message pour les messages entrants (65536) a été dépassé. Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur l'élément de liaison approprié.

config serveur:

<system.web> 
<compilation debug="true" targetFramework="4.0" /> 
<httpRuntime maxRequestLength="2097151" useFullyQualifiedRedirectUrl="true" executionTimeout="14400"/> 
<customErrors mode="Off" /></system.web> 

Reliure

 <wsHttpBinding> 
    <binding name="wsBufferedHttpsBinding" messageEncoding="Mtom" 
      maxReceivedMessageSize="11534336" maxBufferPoolSize="524288" 
      sendTimeout="00:05:00" receiveTimeout="00:05:00" openTimeout="00:05:00" closeTimeout="00:05:00" > 
     <readerQuotas maxDepth="64" maxStringContentLength="11534336" maxArrayLength="11534336" 
      maxBytesPerRead="11534336" maxNameTableCharCount="16384" /> 
    </binding> 
    </wsHttpBinding> 

service

 <service name="MyService"> 
    <endpoint address="" 
       binding="wsHttpBinding" 
       bindingName="wsBufferedHttpsBinding" 
       contract="IServiceContract"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    <endpoint address="soap12IssuedToken" binding="customBinding" 
     bindingConfiguration="soap12IssuedToken" name="soap12IssuedToken" 
     bindingNamespace="http://url" 
     contract="IServiceContract" /> 
    </service> 

Qu'est-ce qui ne va pas avec ce service? J'ai mis cette taille de message partout.

+0

Quelle est la taille des fichiers à transférer? Il peut être utile d'utiliser [streaming avec la liaison http] (http://msdn.microsoft.com/en-us/library/ms733742.aspx). –

+0

Oublié de dire - c'est l'échec lors de l'envoi de fichiers 1mb. –

+0

J'ai trouvé ce commentaire très intéressant sur ce sujet: http://stackoverflow.com/a/4808527/383187. Mais dans mon suivi, il n'y a pas de messages 'No Endpoint found' –

Répondre

2

On dirait que le problème principal est que votre point de terminaison ne fait pas référence à une configuration de liaison. Vous êtes donc utilisez la valeur par défaut 65536.

Il y a quelques autres choses à vérifier:

  • Vous avez 2 points de terminaison pour le même marché que vous utilisez celui où maxReceivedMessageSize est réglé?
  • La configuration sur le client correspond-elle à celle du serveur?
  • Vous pouvez aussi avoir besoin de définir "maxBufferPoolSize" et "MaxBufferSize"
0

réponse est assez simple:

<endpoint address="" 
      binding="wsHttpBinding" 
      bindingName="wsBufferedHttpsBinding" 
      contract="IServiceContract"> 

Je n'ai pas vu qu'il ya bindingName au lieu de bindingConfiguration

0

J'ai également été confronté à ce problème plus tard, mais je l'ai résolu en ajoutant le dataContractSerializer maxItemsInObjectGraph = "2147483646" dans le comportement du service

Questions connexes