প্রতিক্রিয়া। এবং () ক্ষতিকারক হিসাবে বিবেচিত?


198

এই কেবি আর্টিকেলটিতে বলা হয়েছে যে Response.End()এএসপি.এনইটি একটি থ্রেড বাতিল করে।

প্রতিফলক দেখায় যে এটি এর মতো দেখাচ্ছে:

public void End()
{
    if (this._context.IsInCancellablePeriod)
    {
        InternalSecurityPermissions.ControlThread.Assert();
        Thread.CurrentThread.Abort(new HttpApplication.CancelModuleException(false));
    }
    else if (!this._flushing)
    {
        this.Flush();
        this._ended = true;
        if (this._context.ApplicationInstance != null)
        {
            this._context.ApplicationInstance.CompleteRequest();
        }
    }
}

এটি আমার কাছে বেশ কঠোর মনে হচ্ছে। যেমন কেবি নিবন্ধটি বলেছে, নিম্নলিখিত অ্যাপ্লিকেশনটিতে যে কোনও কোড Response.End()কার্যকর করা হবে না এবং এটি অন্তত বিস্ময়ের নীতি লঙ্ঘন করে। এটি প্রায় Application.Exit()কোনও উইনফোর্স অ্যাপ্লিকেশনটির মতো। থ্রেড অ্যাওর্ট ব্যতিক্রমের কারণে Response.End()ছড়িয়ে পড়ার মতো নয়, সুতরাং কোডটিকে ঘিরে একটি try... finallyসন্তুষ্ট হবে না।

আমার সবসময় এড়ানো উচিত কিনা তা আমাকে অবাক করে দেয় Response.End()

কেউ কি পরামর্শ দিতে পারেন Response.End(), আমার কখন ব্যবহার করা উচিত , কখন Response.Close()এবং কখন HttpContext.Current.ApplicationInstance.CompleteRequest()?

রেফ: রিক স্ট্রালের ব্লগ এন্ট্রি


আমি যে ইনপুট পেয়েছি তার উপর ভিত্তি করে, আমার উত্তর হ্যাঁ, Response.Endক্ষতিকারক , তবে এটি কিছু সীমিত ক্ষেত্রে কার্যকর।

  • Response.End()অবিলম্বে HttpResponseব্যতিক্রমী অবস্থার অবসান ঘটাতে, অপছন্দযোগ্য ছোঁড়া হিসাবে ব্যবহার করুন । ডিবাগিংয়ের সময়ও কার্যকর হতে পারে। রুটিন প্রতিক্রিয়াগুলি সম্পূর্ণ করতে এড়িয়ে চলুনResponse.End()
  • Response.Close()অবিলম্বে ক্লায়েন্টের সাথে সংযোগ বন্ধ করতে ব্যবহার করুন। প্রতি এই দুটিই MSDN ব্লগ পোস্টে , এই পদ্ধতি স্বাভাবিক HTTP অনুরোধ প্রক্রিয়াকরণের জন্য উদ্দেশ্যে নয়। আপনার পক্ষে এই পদ্ধতিটি কল করার পক্ষে যুক্তিসঙ্গত কারণ এটি অত্যন্ত অসম্ভব।
  • CompleteRequest()একটি সাধারণ অনুরোধ শেষ করতে ব্যবহার করুন । বর্তমান ইভেন্টটি সম্পূর্ণ হওয়ার পরে, CompleteRequestএএসপি.এনইটি পাইপলাইনটিকে EndRequestইভেন্টে এগিয়ে যেতে সহায়তা করে HttpApplication। আপনি যদি কল করেন CompleteRequest, তবে প্রতিক্রিয়াটির জন্য আরও কিছু লিখুন, ক্লায়েন্টকে লেখাটি পাঠানো হবে।

সম্পাদনা করুন - 13 এপ্রিল 2011

আরও স্পষ্টতা এখানে পাওয়া যায়:
- এমএসডিএন ব্লগে দরকারী পোস্ট
- জোন রেডের দরকারী বিশ্লেষণ


2
এই উত্তরটির পরে কী পরিবর্তন হয়েছে তা ধারণা নেই, তবে আমি Response.End ThreadAbortExceptionঠিক জরিমানা করছি catch
মাসলো

1
এটি মনে রাখবেন Response.Redirectএবং Server.Transferউভয় কল Response.Endএবং এড়ানো উচিত।
ওভেন ব্ল্যাকার

উত্তর:


66

আপনি যদি আপনার অ্যাপ্লিকেশনটিতে একটি ব্যতিক্রম লগার নিয়োগ করেছেন, তবে ThreadAbortExceptionএই সৌম্য Response.End()কলগুলি থেকে এটি দিয়ে জল দেওয়া হবে । আমি মনে করি এটি মাইক্রোসফ্টের "এটিকে ছুঁড়ে ফেল!"

আমি কেবল তখনই ব্যবহার করব Response.End()যদি কিছু ব্যতিক্রমী শর্ত থাকে এবং অন্য কোনও পদক্ষেপ সম্ভব হয় না। সম্ভবত তখন, এই ব্যতিক্রম লগ করা আসলে একটি সতর্কতা নির্দেশ করে।


107

টি এল; ডিআর

প্রাথমিকভাবে আমি প্রস্তাব দিয়েছিলাম যে আপনি কেবলমাত্র আপনার সমস্ত কলকে [রেসপন্স.এন্ড] সাথে [...] কমপ্লিটরেক্সেস্ট () কলগুলির সাথে প্রতিস্থাপন করা উচিত, তবে আপনি যদি পোস্টব্যাক প্রসেসিং এবং এইচটিএমএল রেন্ডারিং এড়াতে চান তবে আপনাকে যুক্ত করতে হবে [..] ।] পাশাপাশি ওভাররাইডগুলি।

জন রেড , "চূড়ান্ত বিশ্লেষণ"


প্রতি এমএসডিএন, জন রেড , এবং অ্যালেন রেনন:

ASP.NET পারফরম্যান্স - ব্যতিক্রম পরিচালনা - ব্যতিক্রমগুলি এড়ায় এমন কোডটি লিখুন

সার্ভার.টান্সফার, রেসপন্স। রিডাইরেক্ট, রেসপন্স.এন্ড পদ্ধতিগুলি সমস্ত ব্যতিক্রম বাড়ে। এই পদ্ধতিগুলির প্রতিটি অভ্যন্তরীণভাবে রেসপন্স কল করে nd রেসপন্সের কল E এবং পরিবর্তে, একটি থ্রেডঅবর্টেক্সেপশন ব্যতিক্রম ঘটায়

থ্রেডঅবর্ট এক্সসেপশন সলিউশন

এইচটিটিপিএপ্লিকেশন.কমলিটরউয়েস্ট () একটি ভেরিয়েবল সেট করে যার ফলে থ্রেডটি এইচটিটিপি অ্যাপ্লিকেশন ইভেন্ট পাইপলাইনের বেশিরভাগ ইভেন্টকে ছাড়িয়ে যায় - [-] পৃষ্ঠা ইভেন্ট চেইন নয় বরং অ্যাপ্লিকেশন ইভেন্ট চেইন।

...

শ্রেণীর স্তরের ভেরিয়েবল তৈরি করুন যা যদি পৃষ্ঠাগুলি শেষ হয়ে যায় এবং তারপরে আপনার ইভেন্টগুলি প্রক্রিয়া করার আগে বা আপনার পৃষ্ঠাটি রেন্ডার করার আগে ভেরিয়েবলটি পরীক্ষা করে। [...] আমি কেবল রাইসপোস্টব্যাকএভেন্ট এবং রেন্ডার পদ্ধতিগুলিকে ওভাররাইড করার পরামর্শ দিচ্ছি

প্রতিক্রিয়া.আর এবং প্রতিক্রিয়া। কর্মক্ষমতা গুরুত্বপূর্ণ যখন ক্লোজ সাধারণ অনুরোধ প্রক্রিয়াকরণ ব্যবহার করা হয় না। প্রতিক্রিয়া.এন্ড একটি সম্পর্কিত পারফরম্যান্স জরিমানার সাথে অনুরোধ প্রক্রিয়াকরণ বন্ধ করার একটি সুবিধাজনক, ভারী হাতের উপায়। প্রতিক্রিয়া.ক্লোজ হ'ল আইআইএস / সকেট স্তরে এইচটিটিপি প্রতিক্রিয়া অবিলম্বে সমাপ্ত করার জন্য এবং কিপএলাইভের মতো বিষয়গুলির সাথে সমস্যা সৃষ্টি করে।

একটি এএসপি.নেট অনুরোধটি শেষ করার প্রস্তাবিত পদ্ধতিটি হ'ল HTTP অ্যাপ্লিকেশন Comকমলিটরউইকেষ্ট। মনে রাখবেন যে এইএসপি.এনইটি রেন্ডারিংটি ম্যানুয়ালি ছাড়তে হবে যেহেতু এইচটিপি অ্যাপ্লিকেশন Com কমপ্লিট রিকুয়েস্টটি বাকি আইআইএস / এএসপি.এনইটি অ্যাপ্লিকেশন পাইপলাইন এড়িয়ে চলেছে, এএসপি.নেট পেজ পাইপলাইন নয় (যা অ্যাপ পাইপলাইনের এক পর্যায়ে রয়েছে)।


কোড

কপিরাইট © 2001-2007, সি 6 সফটওয়্যার, ইনক সেরা হিসাবে আমি বলতে পারি।


উল্লেখ

HttpApplication.CompleteRequest

কার্যকারিতাটির HTTP পাইপলাইন চেইনে সমস্ত ইভেন্ট এবং ফিল্টারিংকে বাইপাস করতে এবং এন্ডক্রয়েস্ট ইভেন্টটি সরাসরি কার্যকর করতে এএসপি.এনইটিকে কারণ প্রদান করে।

Response.End

এই পদ্ধতিটি কেবল এএসপি -এর সাথে সামঞ্জস্যের জন্য সরবরাহ করা হয় CO এটি সিএম-ভিত্তিক ওয়েব-প্রোগ্রামিং প্রযুক্তির সাথে সামঞ্জস্যের জন্য যা পূর্ববর্তী এএসপি.এনইটি. পূর্বনির্ধারিত এএসপি.নেট। [সামনে জোর দাও]

Response.Close

এই পদ্ধতিটি আকস্মিক উপায়ে ক্লায়েন্টের সাথে সংযোগ বন্ধ করে দেয় এবং সাধারণ এইচটিটিপি অনুরোধ প্রক্রিয়াজাতকরণের উদ্দেশ্যে নয় । [সামনে জোর দাও]


4
> মনে রাখবেন যে এইএসপি.এনইটি রেন্ডারিংটি ম্যানুয়ালি ছাড়তে হবে যেহেতু এইচটিপি অ্যাপ্লিকেশন। কমপ্লিট রিকুইয়েস্ট বাকি আইআইএস / এএসপি.নেট অ্যাপ্লিকেশন পাইপলাইন এড়িয়ে চলেছে, এএসপি.নেট পেজ পাইপলাইন নয় (যা অ্যাপ পাইপলাইনের এক পর্যায়ে রয়েছে)। এবং আপনি কীভাবে এটি সম্পাদন করবেন?
পাইলটবোজ

1
কোডটির লিঙ্কটি দেখুন যেখানে জন রেড প্রদর্শন করেছেন যে কীভাবে কোনও পতাকা সেট করা যায় এবং পৃষ্ঠার রাইসপোস্টব্যাকএভেন্ট এবং রেন্ডার পদ্ধতিগুলিকে ওভাররাইড করা যায় যখন ইচ্ছা হয় যখন প্রয়োগ করতে পারেন sk (আপনি সম্ভবত একটি বেস বর্গ সব আপনার অ্যাপ্লিকেশনের পেজ থেকে উত্তরাধিকারী উচিত এই করতে চাই।) Web.archive.org/web/20101224113858/http://www.c6software.com/...
user423430

4
কেবলমাত্র পুনঃস্থাপনের জন্য: এইচটিটিপি অ্যাপ্লিকেশন Com কমপ্লিট রিকোয়েস্ট প্রতিক্রিয়াটিকে প্রতিক্রিয়া হিসাবে শেষ করবে না nd
গ্লেন লিটল

2
এইচটিপিএপ্লিকেশন.কমলিটরউয়েস্ট কোড প্রবাহও থামায় না, সুতরাং পরবর্তী লাইনগুলি চলতে থাকবে। এটি ব্রাউজারটি যা দেখায় তাতে প্রভাব ফেলতে পারে না, তবে যদি সেই লাইনগুলি অন্য কোনও প্রসেসিং করে তবে তা সত্যিই বিভ্রান্ত হতে পারে।
জোশুয়া ফ্র্যাঙ্ক

3
আমি ভাবতে পারি না তবে ওয়েব ফর্মগুলি ডিজাইনের মাধ্যমে নষ্ট হয়ে গেছে। রিসপন্সকে কল করা, কর্মক্ষমতা হ্রাসকারী আরও কী? আমি দেখতে পাই না যেখানে রেসপন্স। এবং () এখানে "আরও" ক্ষতিকারক। অধিকন্তু, মাইক্রোসফ্ট code থ্রেডআবার্টেক্সপশন'টিকে একটি সাধারণ ঘটনা হিসাবে বিবেচনা করে যেমন এই কোড থেকে প্রতীয়মান: রেফারেন্সসোর্স.মাইক্রোসফটকম / # সিস্টেমে.ওয়েব / ইউআই / পেজসিএক্স, 4875 একটি জিনিস যা রেসপন্সের বিরুদ্ধ। প্রতিক্রিয়া বাতিল, যা মাঝে মধ্যে প্রদর্শিত প্রতিক্রিয়া প্রদর্শিত হতে পারে।
ঘাসন

99

এই প্রশ্নটি প্রতিক্রিয়া সম্পর্কিত তথ্যের জন্য সমস্ত গুগল অনুসন্ধানগুলির শীর্ষের নিকটে উপস্থিত হয় end সুতরাং আমার মতো অন্যান্য অনুসন্ধানগুলির জন্য যারা পুরো এএসপিএক্স পৃষ্ঠাটি রেন্ডার না করে কোনও ইভেন্টের প্রতিক্রিয়াতে সিএসভি / এক্সএমএল / পিডিএফ ইত্যাদি পোস্ট করতে চান, আমি এটিই এইভাবে করি end । (রেন্ডার পদ্ধতিগুলিকে ওভাররাইড করা এ জাতীয় সাধারণ আইএমওর জন্য অতিরিক্ত জটিল)

// Add headers for a csv file or whatever
Response.ContentType = "text/csv"
Response.AddHeader("Content-Disposition", "attachment;filename=report.csv")
Response.AddHeader("Pragma", "no-cache")
Response.AddHeader("Cache-Control", "no-cache")

// Write the data as binary from a unicode string
Dim buffer As Byte()
buffer = System.Text.Encoding.Unicode.GetBytes(csv)
Response.BinaryWrite(buffer)

// Sends the response buffer
Response.Flush()

// Prevents any other content from being sent to the browser
Response.SuppressContent = True

// Directs the thread to finish, bypassing additional processing
HttpContext.Current.ApplicationInstance.CompleteRequest()

1
এটি করার জন্য আপনার কোনও এপিএসএক্স পৃষ্ঠা ব্যবহার করা উচিত নয়। এটি প্রচুর অপচয় করার প্রচেষ্টা। আপনি একটি এএসএমএক্স বা ওয়েব পরিষেবা, একটি এএসপিএক্স পৃষ্ঠা ব্যতীত অন্য কিছু ব্যবহার করার কথা।
ম্যাটম্যানসার

19
সবচেয়ে সহজ বাস্তবায়ন সহ এটিই উত্তর বলে মনে হচ্ছে। কীটি রেসপন্স.সপ্রেসকন্টেন্ট = সত্য।
ক্রিস ওয়েবার

3
@ ম্যাটম্যানসার - একই উত্সের বিভিন্ন উপস্থাপনের জন্য একটি পৃথক পৃষ্ঠা থাকা সর্বদা সহজ / সেরা / পরামর্শদাতা নয়। REST ইত্যাদি সম্পর্কে চিন্তা করুন যদি ক্লায়েন্ট নির্দেশ করে যে তারা একটি শিরোনাম বা প্যারামের মাধ্যমে সিএসভি, এক্সএমএল চায় তবে এই পদ্ধতিটি অবশ্যই সেরা হবে, তবে এখনও এসপিএনটির সাধারণ রেন্ডারিং সুবিধার মাধ্যমে এইচটিএমএল সমর্থন সরবরাহ করে।
ক্রিস ওয়েবার

1
এটি আমার পক্ষে কাজ করে না। আমার একটি পৃষ্ঠা ছিল যা রেসপন্স.এন্ড () এর সাথে কাজ করেছিল, তবে প্রতিক্রিয়া.ক্লোজ (), রেসপন্স.ফ্লুশ () এর সমস্ত ধরণের সংমিশ্রণ ব্যবহার করে। এইচটিসিপিএনটেক্সট.কেনর্ট.এপ্লিকেশনআইনস্ট্যান্স.কমলিটরউকয়েস্ট () এবং অন্যান্য বিভিন্ন জিনিস যদি আমি রেসপন্সে একটি গিজিপস্ট্রিম ফিল্টার না করি তবে কাজ করে না। যা ঘটতে দেখা গেল তা হ'ল পৃষ্ঠাটি এখনও আমার ফাইলের সাথে আউটপুট ছিল। অবশেষে আমি রেন্ডার () ফাংশনটি (ফাঁকা হতে) ওভাররড করেছি এবং এটি আমার জন্য সমাধান করেছে।
এরিক

1
CompleteRequest অ্যাপ্লিকেশন পাইপলাইনের অংশগুলি এড়িয়ে যায় তবে পৃষ্ঠার রেন্ডারিং প্রক্রিয়াটির বাকি অংশগুলি চলবে, এটি প্রতিক্রিয়াটির মতো তাত্ক্ষণিক স্টপ নয়, এটি আরও প্রশংসনীয়। এই পৃষ্ঠায় অন্যান্য উত্তরে কেন আরও গভীরতার ব্যাখ্যা রয়েছে।
জে জেলোস

11

"আমি এখনও রেসপন্সের মধ্যে পার্থক্য জানি না lo ক্লোজ এবং কমপ্লিট রিকুইস্ট ()" এই প্রশ্নে আমি বলব:

CompleteRequest () পছন্দ করুন, প্রতিক্রিয়া ব্যবহার করবেন না lo ক্লোজ ()।

এই ক্ষেত্রে একটি ভাল সম্পন্ন সারাংশ জন্য নিম্নলিখিত নিবন্ধটি দেখুন ।

সচেতন থাকুন যে কমপ্লিটআরওয়েস্ট () কল করার পরেও কিছু পাঠ্য (যেমন এএসপিএক্স কোড থেকে রেন্ডারড) প্রতিক্রিয়া আউটপুট প্রবাহে যুক্ত হবে। আপনি নিম্নলিখিত নিবন্ধে বর্ণিত হিসাবে রেন্ডার এবং রাইসপোস্টব্যাকেন্ট পদ্ধতিগুলি ওভাররাইড করে এটি প্রতিরোধ করতে পারেন ।

বিটিডাব্লু: আমি রেসপন্স ব্যবহার বন্ধ করার সাথে একমত হয়েছি nd এবং (), বিশেষত ফাইল ডাউনলোড অনুকরণ করার জন্য HTTP স্ট্রিমে ডেটা লেখার সময়। আমাদের লগ ফাইলটি থ্রেডঅবর্ট এক্সেপ্সেনে পূর্ণ না হওয়া পর্যন্ত আমরা অতীতে প্রতিক্রিয়া.এন্ড () ব্যবহার করেছি।


আপনার বর্ণনা অনুসারে আমি রেন্ডারকে ওভাররাইড করতে আগ্রহী, তবে "নিম্নলিখিত নিবন্ধ" এর লিঙ্কটি মারা গেছে। সম্ভবত আপনি আপনার এন্ট্রি আপডেট করতে পারেন?
পাকোগোমেজ

দেরিতে উত্তরের জন্য দুঃখিত। আমার ঠিক মনে নেই, সেই নিবন্ধে কী ছিল। যাইহোক, আমি এটি ওয়েবআর্কাইভ.অর্গ: ওয়েব.আর্টিভ.আর.ইউবি /20101224113858/http://www.c6software.com/…
জানু Šোটোলা

9

" প্রতিক্রিয়া। এবং ক্ষতিকারক " এই বক্তব্যটির সাথে আমি একমত নই । এটি অবশ্যই ক্ষতিকারক নয়। প্রতিক্রিয়া। এবং এটি যা বলে তা করে; এটি পৃষ্ঠার সম্পাদন শেষ করে। এটি কীভাবে বাস্তবায়িত হয়েছিল তা দেখার জন্য প্রতিচ্ছবি ব্যবহার করে কেবল শিক্ষামূলক হিসাবে দেখা উচিত।


আমার 2cent সুপারিশ
এড়াতে ব্যবহার Response.End()নিয়ন্ত্রণ প্রবাহ হিসাবে।
আপনারResponse.End() যদি অনুরোধের সম্পাদন বন্ধ করতে হয় এবং সচেতন হন (সাধারণত) * কোনও কোডই সেই পয়েন্টটি কার্যকর করে না use


* Response.End()এবং থ্রেডঅবর্টেক্সপশন এস।

Response.End() এটির বর্তমান বাস্তবায়নের অংশ হিসাবে একটি থ্রেডঅবর্টেক্সপশন নিক্ষেপ করে (যেমন ওপি দ্বারা উল্লিখিত)।

থ্রেডআবার্ট এক্সসেপশন একটি বিশেষ ব্যতিক্রম যা ধরা যেতে পারে তবে এটি স্বয়ংক্রিয়ভাবে ক্যাচ ব্লকের শেষে আবার উত্থাপিত হবে।

থ্রেডআবার্টএক্সপ্লেসেসের সাথে মোকাবিলা করতে হবে এমন কোডটি কীভাবে লিখতে হয় তা দেখতে, @ মেহরদাদের এসও-এর উত্তর দেখুন কীভাবে আমি একটি শেষ ব্লকে থ্র্যাডবোর্টেক্সপশন সনাক্ত করতে পারি যেখানে তিনি রানটাইমহেল্পার্সকে উল্লেখ করেছেন x এক্সিকিউটকোডভিথগুরান্টেড ক্লিনআপ পদ্ধতি এবং সীমাবদ্ধ এক্সিকিউশন অঞ্চলগুলি


রিক Strahl নিবন্ধ উল্লিখিত শিক্ষামূলক, এবং পাশাপাশি মন্তব্য পড়তে ভুলবেন না। দ্রষ্টব্য যে স্ট্রাহলের সমস্যাটি নির্দিষ্ট ছিল। তিনি ক্লায়েন্ট (একটি চিত্র) এর কাছে ডেটা পেতে চেয়েছিলেন এবং তারপরে হিট-ট্র্যাকিং ডাটাবেস আপডেটের প্রক্রিয়া করতে পারেন যা চিত্রটির পরিবেশনকে কমিয়ে দেয় না, যা রেসপন্সের পরে তার কিছু করার সমস্যা তৈরি করেছিল nd এবং বলা হয়েছিল।


আমরা এই পোস্ট দেখেছি stackoverflow.com/questions/16731745/... পরামর্শ Response.SuppressContent ব্যবহার = true HttpContext.Current.ApplicationInstance.CompleteRequest () Response.End () এর পরিবর্তে
jazzBox

3

আমি প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করতে রেসপন্স.এন্ড () ব্যবহার করার বিষয়টি কখনই বিবেচনা করি নি।

তবে প্রতিক্রিয়া.এন্ড () ব্যবহারকারীর কাছে ফাইল দেওয়ার সময় উদাহরণস্বরূপ কার্যকর হতে পারে।

আপনি প্রতিক্রিয়াতে ফাইলটি লিখেছেন এবং প্রতিক্রিয়াতে অন্য কোনও কিছু যুক্ত করা আপনি চান না কারণ এটি আপনার ফাইলটিকে দূষিত করতে পারে।


1
আমি "প্রতিক্রিয়াটি সম্পূর্ণ হয়েছে" বলার জন্য একটি এপিআইয়ের প্রয়োজনীয়তা বুঝতে পেরেছি। তবে রেসপন্স.এন্ড () থ্রেড বাতিলও করে। এটিই প্রশ্নের জটলা। কখন এই দুটি জিনিসকে জুড়ি দেওয়া ভাল ধারণা?
চিজো

2

আগে জোরপূর্বক জিনিস শেষ করার জন্য আমি। নেট এবং ক্লাসিক এএসপি উভয়টিতে রেসপন্স.এন্ড () ব্যবহার করেছি। উদাহরণস্বরূপ, যখন লগইন প্রচেষ্টাগুলির একটি সার্টিয়ান পরিমাণ থাকে তখন আমি এটি ব্যবহার করি। বা যখন কোনও সুরক্ষিত পৃষ্ঠা অরক্ষিত প্রবেশাধিকার থেকে প্রবেশ করা হয় (মোটামুটি উদাহরণ):

    if (userName == "")
    {
        Response.Redirect("......");
        Response.End();
    }
    else
    {
      .....

কোনও ফ্ল্যাশ ব্যবহারকারীর কাছে ফাইল সরবরাহ করার সময়, সমাপ্তি সমস্যার কারণ হতে পারে।


মনে রাখবেন, ফ্লাশ () "এটিই শেষ" নয়। এটি কেবল "এতদূর সমস্ত কিছু সরিয়ে ফেলুন।" আপনি যে "এটিই শেষ হতে পারে" এর কারণটি ক্লায়েন্টকে সচেতন করতে দেওয়া যাতে এটিতে সমস্ত সামগ্রী রয়েছে, যখন সার্ভারটি গিয়ে অন্য কাজ করতে পারে - একটি লগ ফাইল আপডেট করুন, একটি ডাটাবেস কাউন্টার জিজ্ঞাসা করুন বা যা কিছু হোক। আপনি যদি রেসপন্স কল করেন l যদি আপনি রেসপন্স কল করেন এবং শেষ () তবে নিয়ন্ত্রণটি লাফিয়ে যায় এবং ডিবি কোয়েরিগুলি পায় না ইত্যাদি
চিজো

আপনি বিকল্পভাবে ওভাররাইড প্রতিক্রিয়া ব্যবহার করতে পারেন ed পুনর্নির্দেশ ("....", সত্য) যেখানে বুলটি 'এন্ডারেস্পোনস: পৃষ্ঠাটির বর্তমান সম্পাদন সমাপ্ত হওয়া উচিত কিনা তা নির্দেশ করে "
রবার্ট পলসন

লগইন শংসাপত্রগুলির দ্বারা সুরক্ষিত হওয়া পৃষ্ঠাগুলিকে সুরক্ষিত করার জন্য ফর্ম প্রমাণীকরণ কাঠামোটি ব্যবহার করা সর্বদা ভাল better
রবার্ট পলসন

3
প্রকৃতপক্ষে, নিজেকে সংশোধন করার জন্য, আমি রেসপন্সের ডিফল্ট বিশ্বাস করি। রিডার্স এবং সার্ভার.টান্সফার হ'ল রেসপন্সকে কল করা উচিত। এবং যদি না আপনি ওভাররাইডকে কল করেন এবং 'মিথ্যা' পাস না করেন তবে আপনার কোডটি যেভাবে রেসপন্স লেখা হয় সেটিকে আর বলা হয় না nd ,
রবার্ট পলসন

1
রেসপন্স.এন্ড ক্লাসিক এএসপির চেয়ে। নেটতে অনেক আলাদাভাবে কাজ করে। নেট এ এটি একটি থ্রেডবোর্টেক্সেপশন সৃষ্টি করে, যা বেশ বাজে হতে পারে।
অ্যান্ডি

2

আমি কেবল পরীক্ষার / ডিবাগিং প্রক্রিয়া হিসাবে রেসপন্স.এন্ড () ব্যবহার করেছি

<snip>
Response.Write("myVariable: " + myVariable.ToString());
Response.End();
<snip>

আপনি গবেষণার ক্ষেত্রে যা পোস্ট করেছেন তা বিচার করে আমি বলব যদি এটির প্রতিক্রিয়া প্রয়োজন হয় তবে এটি একটি খারাপ নকশা হবে nd


0

ক্লাসিক এপগুলিতে, আমার কাছে কিছু অজ্যাক্স কলগুলিতে 3 থেকে 10 সেকেন্ডের একটি টিটিএফবি (টাইম টু ফার্স্ট বাইট) ছিল, আরও অনেক এসকিউএল কল সহ নিয়মিত পৃষ্ঠাগুলিতে টিটিএফবি থেকে অনেক বড়।

প্রত্যাবর্তিত এজাক্সটি এইচটিএমএল-র একটি অংশ যা পৃষ্ঠাতে ইনজেকশনের জন্য ছিল।

টিটিএফবি রেন্ডার সময়ের চেয়ে কয়েক সেকেন্ড বেশি ছিল।

যদি আমি একটি প্রতিক্রিয়া যোগ করি end রেন্ডারের পরে, টিটিএফবি অনেক কমানো হয়েছিল।

আমি "</body> </html>" নির্গত করে একই প্রভাব পেতে পারি, তবে জসন বা এক্সএমএল আউটপুট দেওয়ার সময় সম্ভবত এটি কাজ করে না; এখানে প্রতিক্রিয়া। শেষ প্রয়োজন।


আমি জানি এটি একটি পুরানো উত্তর, তবে তারপরে আবার ক্লাসিক এসপটি পুরানো। আমি এটি দরকারী হিসাবে খুঁজে পেয়েছি ;-)
লিফ নেল্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.