تنظیمات پروکسی ASMX را بیرون از Reference.cs تولیدشده نگه دارید
کلاینت سرویس ASMX را از طریق ویژگیهای عمومی پروکسی آن پیکربندی کنید و سفارشیسازی لازم درخواست را جدا از فایلهای مرجع بازتولیدشده نگه دارید.
برای کلاینت ASMX مبتنی بر HttpWebClientProtocol در .NET Framework، ویژگی عمومی Proxy را پیش از نخستین عملیات شبکه پیکربندی کنید:
var service = new ReportsService();
service.Proxy = new WebProxy("http://proxy.example:8080")
{
Credentials = proxyAccount
};
ReportsService کلاس تولیدشده است و proxyAccount از استقرار میآید. اعتبارنامههای سرویس SOAP جدا هستند. این انتساب نیازی به تکرار درون هر عملیات تولیدشده ندارد.
اگر تغییر به یک گزینه زیربنایی درخواست یا ابزارگذاری مربوط است، از GetWebRequest(Uri) قابل بازنویسی در کلاس پایه قدیمی استفاده کنید. هنگامی که کلاس تولیدشده جزئی است، یک اعلان جزئی متناظر را در فایل کامپایلشده جداگانه نگه دارید؛ در غیر این صورت یک کلاینت مشتق مناسب میتواند بازنویسی را فراهم کند. پیادهسازی پایه را فراخوانی کنید و ساخت عادی درخواست را حفظ کنید.
این جایگذاری در برابر بهروزرسانی مرجع وب دوام میآورد: بازتولید میتواند ویرایشهای دستی در Reference.cs را جایگزین کند، در حالی که افزونههای جداگانه نگهداریشده بازتولیدپذیر میمانند.
فقط رفتار درخواستی را که واقعاً لازم است تغییر دهید. کپی کردن راهحل KeepAlive میتواند بر استفاده مجدد از اتصال و احراز هویتی که به وضعیت اتصال وابسته است تأثیر بگذارد.
این مدل ASMX/.NET Framework است. WCF و سایر پشتههای SOAP واسطهای انتقال خودشان را دارند. پیش از معرفی یک افزونه سفارشی، تنظیم پشتیبانیشده کلاینت را انتخاب کنید.