নেই কোন সহজ এবং মার্জিত সমাধান Redirect
ASP.Net ওয়েবফর্মগুলি সমস্যা। আপনি ডার্টি সলিউশন এবং ক্লান্তিকর সমাধানের মধ্যে বেছে নিতে পারেন
নোংরা : Response.Redirect(url)
ব্রাউজারে পুনর্নির্দেশ পাঠায় এবং তারপরে ThreadAbortedException
বর্তমান থ্রেডটি শেষ করতে একটি নিক্ষেপ করে । সুতরাং কোনও কোড পুনর্নির্দেশ () - কলের আগে কার্যকর করা হয় না। ডাউনসাইডস: এটি খারাপ অনুশীলন এবং এর মতো থ্রেডগুলি মারতে পারফরম্যান্সের সাথে জড়িত। এছাড়াও, ThreadAbortedExceptions
ব্যতিক্রম লগিং প্রদর্শিত হবে।
ক্লান্তিকর : প্রস্তাবিত উপায়টি কল করা Response.Redirect(url, false)
এবং তারপরেও Context.ApplicationInstance.CompleteRequest()
কোড সম্পাদনা অব্যাহত থাকবে এবং পৃষ্ঠা লাইফসাইলে থাকা ইভেন্ট ইভেন্টের বাকি অংশগুলি এখনও কার্যকর করা হবে। (উদাহরণস্বরূপ, যদি আপনি পেজ_লুডে পুনঃনির্দেশ সম্পাদন করেন তবে কেবলমাত্র বাকি হ্যান্ডলারকেই কার্যকর করা হবে না, পেজ_প্রেেন্ডার এবং আরও কিছু কল করা হবে - রেন্ডারযুক্ত পৃষ্ঠাটি কেবল ব্রাউজারে প্রেরণ করা হবে না by আপনি অতিরিক্ত প্রক্রিয়াটি এড়াতে পারবেন উদাহরণস্বরূপ পৃষ্ঠায় একটি পতাকা স্থাপন, এবং তারপরে ইভেন্ট হ্যান্ডেলাররা কোনও প্রক্রিয়াজাতকরণের আগে এই পতাকাটি পরীক্ষা করতে দিন।
(ডকুমেন্টেশনে বর্ণিত CompleteRequest
হয়েছে যে এটি " এএসপি.এনইটিকে সমস্ত ঘটনা বাইপাস এবং এক্সিকিউশনের এইচটিটিপি পাইপলাইন চেইনে ফিল্টারিংয়ের কারণ করে" This এটি সহজেই ভুল বোঝা যায় It এটি আরও এইচটিটিপি ফিল্টার এবং মডিউলগুলি বাইপাস করে, তবে এটি পরবর্তী ইভেন্টগুলি বাইপাস করে না বর্তমান পৃষ্ঠায় জীবনকালীন।)
আরও গভীর সমস্যাটি হ'ল ওয়েবফোর্ডগুলিতে বিমূর্ততার স্তরের অভাব রয়েছে। আপনি যখন কোনও ইভেন্ট হ্যান্ডলারটিতে থাকবেন, আপনি ইতিমধ্যে আউটপুট থেকে কোনও পৃষ্ঠা তৈরির প্রক্রিয়াতে রয়েছেন। কোনও ইভেন্ট হ্যান্ডলারে পুনর্নির্দেশ করা কুশ্রী কারণ আপনি কোনও ভিন্ন পৃষ্ঠা উত্পন্ন করার জন্য আংশিক উত্পন্ন পৃষ্ঠাটি বন্ধ করছেন। নিয়ন্ত্রণ প্রবাহ রেন্ডারিং ভিউ থেকে পৃথক থাকায় এমভিসির এই সমস্যা নেই, সুতরাং আপনি RedirectAction
কোনও ভিউ তৈরি না করেই কেবল নিয়ামককে একটি ফিরিয়ে দিয়ে একটি পরিষ্কার পুনর্নির্দেশ করতে পারেন ।
Context.ApplicationInstance.CompleteRequest();
। কেন? আমার কিreturn
শর্তাধীন ইভেন্ট হ্যান্ডলারটি থেকে আসতে হবে ?