Fragensteller
Upload von Bildern > 10kb

Frage
-
Hallo,
ich habe ein kleines Problem mit meinem WCF Service.
Ich kann zwar Bilder die kleiner sind als 10kb als Byte-Array an meinem WCF Service übergeben, aber wenn ich ein größeres Byte-Array übergeben kriege ich den 404 Fehler: Remote Server not found.
Nun bin ich bereits soweit das ich weiß das diverse quotas hochgesetzt werden müssen um den Service das zu ermöglichen aber ich finde nicht die richtige Stelle in meinen beiden Projekten um das zu tun.
Im WCF Service kann ich zwar ein entsprechendes Binding definieren, aber soweit ich das verstanden habe müsste ich dies ja im Client machen der den Service benutzt.
Dies ist jedoch ein Silverlight4 Client und die Referenz wird durch das VS2010 automatisch generiert, und in der ServiceReferences.ClientConfig kann ich kein Binding mit z.B. <readerQuotas> definieren, von Behaviors mal abgesehen. Und eine web.config habe ich da auch nicht.
Irgendwie weiß ich nicht weiter und mit Google komm ich auch nicht weiter weil mir anscheinend die richtige Richtung fehlt in der ich suchen müsste.
Hoffe hier kann mich (bzw. mein Projekt) einer wieder auf Kurs bringen,
MFG Alexander
Dienstag, 9. November 2010 08:47
Alle Antworten
-
Damit du große Daten übertragen kannst musst du die ReaderQuaotas hochsetzen.
Die Service Konfiguration müsste folgendermaßen aussehen:
<basicHttpBinding> <binding name="MyBinding" allowCookies="false" > ... <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> </binding> </basicHttpBinding>
Und hier das Client Binding:
<basicHttpBinding> <binding name="BasicHttpBinding_IMyService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="Transport" /> </binding> </basicHttpBinding>
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 5. Januar 2011 17:34
- Tag als Antwort aufgehoben Alexander_Voigt Freitag, 7. Januar 2011 09:03
Montag, 29. November 2010 11:59 -
Wo genau soll ich das machen?
Ich meine in welcher Servicekonfiguration?
Wenn ich das in der ServiceReferences.ClientConfig mache die zu der ServiceReference in dem Silverlight Projekt gehört schmeißt das VS 2010 bei mir die Fehlermeldung:
"Das Element 'binding' hat ein ungültiges untergeordnetes Element 'readerQuotas'. Erwartet wurde eine Liste möglicher Elemente: 'security'."
Edit:
Und in der Web.config des WCF Services hatte ich das schon drinne stehen, aber trotzdem funktioniert das nicht.
Könnte es sein das der Client nicht automatisch das angegebene Binding benutzt?
Gruß,
Alexander
Freitag, 7. Januar 2011 09:08 -
Zum Vergleich hier einmal die Web.config des Services:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="LSB" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> </binding> </basicHttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior> <!-- Legen Sie den Wert unten auf "false" fest, um die Veröffentlichung von Metadateninformationen zu vermeiden, und entfernen Sie den Metadatenendpunkt oben vor der Bereitstellung. --> <serviceMetadata httpGetEnabled="true" /> <!-- Damit in Fehlern Ausnahmedetails zum Debuggen angezeigt werden, legen Sie den Wert unten auf "true" fest. Legen Sie ihn vor der Bereitstellung auf "false" fest, um die Veröffentlichung von Ausnahmeinformationen zu vermeiden. --> <serviceDebug includeExceptionDetailInFaults="true" /> <dataContractSerializer maxItemsInObjectGraph ="1000000000"/> </behavior> <behavior name="LSBH"> <dataContractSerializer maxItemsInObjectGraph="1000000000" /> </behavior> </serviceBehaviors> </behaviors> <services> <service name="standard" behaviorConfiguration="LSBH"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="LSB" name="Standardep" contract="MyProject.IMyService" /> </service> </services> </system.serviceModel> <connectionStrings> <add name="x3" connectionString="database={0};server={1};user id={2};password={3}" providerName="MySql.Data.MySqlClient" /> <add name="x4" connectionString="database={0};server={1};user id={2};password={3}" providerName="MySql.Data.MySqlClient" /> </connectionStrings> </configuration>
und eine ServiceReference.ClientConfig:
<configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IMyService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="None" /> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost/xxx/xxx.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" contract="MyService.IMyService" name="BasicHttpBinding_IMyService" /> </client> </system.serviceModel> </configuration>
Freitag, 7. Januar 2011 09:39 -
Entferne den Dienstverweis mal aus deinem SL Projekt und füge ihn neu hinzu.
Wenn der Assistent nicht die maxBufferSize="2147483647" und maxReceivedMessageSize="2147483647 gesetzt hat, füge es manuell in der ClientConfig hinzu.
Hast du deinen lokalen IIS in deinen ASP.NET Projekteigenschaften gesetzt oder benutzt du den in VisualStudio eingebauten Webserver?
Freitag, 7. Januar 2011 10:59 -
Hallo,
das habe ich schon mehrere Male getan, und der Assistent setzt das automatisch. Ich habe auch schon beide Varianten für das hosten von Service und Client probiert.
Vom Service zum Client Bilder aus der Datenbank laden ist auch kein Problem, nur das hochladen vom Client zum Service funktioniert nicht sobald die Bilder etwa 10kb groß sind. Und irgendwie finde ich nicht heraus an welcher Einstellung das hakt.
Mit freundlichen Grüßen,
Alexander Voigt
Montag, 10. Januar 2011 14:18