türkçe c# püf noktaları.

Thursday, May 03, 2007

WCF large return issues

wcf kullanırken bazen serverdan 3067 elemanlı bir array göndermeniz gerekebilir bu elemanlarda sizin oluşturduğunuz bir class dan oluşuyor ise biraz büyükçe gelebilir o zaman abuk subuk hatalara maruz kalırsınız.
1. si
"The request channel timed out while waiting for a reply after 00:00:59.4062500. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout."

yani diyorki server zamanında veremedi. halbuki verdi ikiside aynı makinede gözümle görüom yahu. sonra timeout u nasıl artırırsınız şöyle: sendTimeout="00:05:00" yani 5dk bekle dioz clienta app.configde. oda beklemeyi insan olmayı bilio bu seferde başka abuk bir exception
2. si
{"The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element."}
top olasın wcf insanmısın sen diyip bakınıoz ve şunuda app.config e eklememiz gerektiğini görüoz: maxReceivedMessageSize="5000000"
aha bundan sonra 3sn de alıp işine devam edio demekki derdi timeout değil size mıymış bende bilmiom ama bu eblek exceptionlarda olmasa hayatın heyecanı nerede dimi :D

bu arada verdiğim tagların yerini bulmasıda mesele olabilir özellikle svcutil.exe den config aldıysanız eşşek kadar config çıkarıo. o sebeple yukardaki tagların asıl olması gerektiği gibi olan app.config aşşağıdadır.
app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<endpoint
address="http://localhost:8000/"
binding="wsHttpBinding"
bindingConfiguration="TransactionalWS"
contract="IViCent"
/>
</client>
<bindings>
<wsHttpBinding>
<binding name="TransactionalWS" transactionFlow="true" sendTimeout="00:05:00" maxReceivedMessageSize="5000000" >
<reliableSession enabled="True" />
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>

umarım birinin işine yarar.

No comments: