Nicht in der Lage zu senden, die größer byte-arrays, die in der WCF
Habe ich einen WCF-Dienst und ich bin das senden der folgenden datacontract
[DataContract]
public class Sample
{
[DataMember]
public int Type { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Value { get; set; }
[DataMember]
public byte[] ByteList { get; set; }
}
Aber als byte-array-Größe erhöht sich der client nicht mit der Annahme der Daten. Andere Nachrichten sind erfolgreich eingegangen. Ich habe versucht, die Erhöhung der Größe .config. Ich habe auch versucht, sendet das Objekt nach der Serialisierung mittels DataContractSerializer aber nichts funktioniert für mich. Ich weiß, das einige Fehler in meiner Seite aber ich kann es herausfinden. Bitte lassen Sie mich wissen, Ihre Kommentare
<netTcpBinding>
<binding name="tcpbinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="2147483646" maxConnections="10"
maxReceivedMessageSize="2147483646">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="true" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>
<message clientCredentialType="Windows"/>
</security>
</binding>
</netTcpBinding>
- Was ist die genaue Ausnahme, die Sie sehen werden (einschließlich aller inneren Ausnahmen)?
- Ich bin nicht immer irgendwelche Ausnahmen. Seine nur ich bin, die Nachricht nicht erhalten. Server sendet die Nachricht, aber es ist nicht eingegangen in das callback-Ereignis, obwohl. Aber ich bin, den Empfang weiterer Nachrichten gleichzeitig. Auch wenn die Größe des byte-Arrays ist kleiner, erhalte ich die Meldung.
- Seltsam... Versuchen Sie es, indem Sie die Ablaufverfolgung auf dem client aus und betrachten Sie die Spur (und im besonderen Blick für alle Ausnahmen, die kann sich Verschlucken). Siehe z.B. blogs.msdn.com/b/madhuponduru/archive/2006/05/18/601458.aspx
- Haben Sie die gleichen Einstellungen auf der client-Seite?
- Ja rajesh . Kunden haben die gleichen Einstellungen, wie auch.. Aber ich hatte keine Ahnung, wohin gehe ich falsch..:-(
Du musst angemeldet sein, um einen Kommentar abzugeben.
Willkommen in der wunderbaren Welt von WCF-Einstellungen...
Wie groß ist das array, bevor Sie anfangen zu verlieren, Nachrichten (d.h., was ist die größte Menge, die Sie übertragen können, erfolgreich)?
Aus meiner Erfahrung, die Einstellung im Zusammenhang mit arrays ist maxArrayLength (nicht maxItemsInObjectGraph, die sich mit hierarchischen Daten). Stellen Sie sicher, dass diese Einstellung (und auch maxReceivedMessageSize) größer ist als alle ByteList Länge in beide server und client-Konfigurationen.
WCF versteckt seine Fehlermeldungen gut, aber Sie können bis Ablaufverfolgung, um Sie zu finden. Auf der server, fügen Sie diese unter der Konfiguration Knoten im web.config-Datei:
Hinweis
Referenzen
Letzteres zeigt auch, wie Sie öffnen und Lesen der log-Dateien. Sie sollte mindestens eine Fehlermeldung in Dienst.svclog, nachdem Sie einen service-Aufruf, dass nicht wieder eine Nachricht.
fügen Sie einfach
in deine config.
wenn das nicht das problem beheben, fügen Sie dann
allzu gerne unter