log گیری در بیشتر برنامههای میتواند خطاهایی را که هیچ کس موفق به کشف آن نشده است را پیدا کند. WCF هم در این مورد استثنا نیست. در WCF اگر بخواهید یک enum را از طریق سرویسها انتقال دهید باید روی تک تک اعضای آن از اتریبیوت [EnumMember] استفاده کنید. من یک جا به جای استفاده از [EnumMember] از [DataMember] که مخصوص اعضای کلاس است استفاده کرده بودم. به چیزهایی خیلی زیادی شک کرده بودم، همه آنها را امتحان کردم، از روشهای مختلف دیباگ هم استفاده کردم ولی نفهمیدم که علت مشکل An existing connection was forcibly closed by the remote host چیست.
خدا به گردانندگان و کاربران SO خیر بدهد. از طریق یکی از سوالات SO ترغیب شدم که لاگ WCF را فعال کنم. خوشبختانه لاگ تولید شده به من گفت که مشکل از کجاست. فعال کردن لاگ WCF خیلی ساده است، در حد اضافه کردن چند خط به app.config. لطفاً نگاهی به اینجا بیندازید.
دیدگاهها
بازم خوبه حداقل یک پیغام خطا میگرفتی 😉 ما یکبار که تو WCF از JSON Serializer استفاده کرده بودیم یک DTO داشتیم که ارثبری کرده بود و یک Property با نام تکراری توی DTO فرزند بود (از اونها که Warning استفاده از کلمه کلیدی new رو میگیریم). موقعی که سرویس صدا زده میشد انگار یکی Thread مربوط به اون سرویس رو خفه میکرد 🙂 هیچی نمیاومد سمت Client! یعنی یک Response کاملاً خالی.
Warning کامپایلر به دادمون رسید !