Érdemes elolvasni, nagyon cumi.
Tegnap beleszaladtunk egy olyan hibába, hogy egyik pillanatról a másikra az svcutil nem tudta legenerálni a kliens proxy-t a wcf service-ünkhöz.
Ami változott, néhány függvényt hozzáadtunk az interface-en. A hibaüznenet annyi volt, hogy a szerver bezárta a kapcsolatot, nem lehet csatlakozni. Próbáltam "felezéssel" kitalálni, melyik metódus a hibás, kikommenteltem felét, svcutil-al generáltam, figyeltem elszáll-e.
A végére maradt 4 metódus, látszólag semmi extra nincs bennük. Mivel ugyanolyan bemenő és kimenő paraméterekkel van már benne "jó" metódus más névvel, kezdett gyanús lenni. Levettem a kommentet, és másik 4-et kikommenteltem, random, tök mindegy mit.
Ugyanúgy ment, tehát NEM a metódusokkal volt baj, hanem azok számával. Nem volt sok, 30-35 metódus, ez meglehetősen kevés ahhoz képest, ami egy service-en általában szokott lenni, de rákeresve a "wcf limit method net.tcp svcutil" kulcsszavakra a következő oldalon egy nagyon szép nyomozás után találtam egy meglehetősen fura leírást és megoldást:
http://social.msdn.microsoft.com/forums/en-US/wcf/thread/d7e36a08-5835-42f8-8eec-8e005cb063c9/
A lényeg, hogy az svcutil-nak is van egy svcutil.exe.config állománya, amiben a net.tcp binding beállításai a default-ok, tehát a már szopások során megismert maxTableCharCount, maxBufferSize, maxReceivedMessageSize stb. paraméterek nincsenek beállítva.
Egy megoldás a problémára:
Kimásoljuk az svcutil-t a konfigjával együtt a proxy generáló parancsunk mellé (vagy bárhova), és abban a konfigban a fenti linken leírt módon ezeket a beállításokat megcsináljuk. És voállá, megy a proxy generálás...
A Microsoftnál egy kicsit jobban átgondolhatták volna ezt... vagy legalább egy normális hibaüzenetet dobhattak volna.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése