সার্ভার.টান্সফার বনাম Response.Redirect


263

Server.Transferএবং মধ্যে পার্থক্য কি Response.Redirect?

  • প্রত্যেকের সুবিধা এবং অসুবিধাগুলি কী কী?
  • এক অন্যের তুলনায় কখন উপযুক্ত?
  • কখন উপযুক্ত হয় না?

3
সুবিধা এবং অসুবিধাগুলি নীচের সাইটের মধ্যে বর্ণিত হয়েছে। বিকাশকারী / নেট / এসপি / আর্টিক্যাল.পিপি / ৩২৯৯964১ নিবন্ধের একটি আকর্ষণীয় বিষয় হ'ল সার্ভার.টান্সফার সার্ভারের তুলনায় বেশি সার্ভার শক্তি গ্রহণ করে ed পুনঃনির্দেশ।
রায় লু

সার্ভার.টান্সফার পৃষ্ঠা অনুরোধগুলি হ্রাস করে, তাই আমি মনে করি এটি সেই ক্ষেত্রে এটি "আরও ভাল"। যাইহোক, প্রতিক্রিয়া.সরাক্ষক ব্যবহারকারীকে বাহ্যিক সাইটে প্রেরণ করতে পারে যখন সার্ভার.টান্সফার পারে না।
কোডকন্সশন

1
আপনি যদি আইআইএস 7 ইন্টিগ্রেটেড মোডে চালাচ্ছেন তবে আপনি এর Server.TransferRequestপরিবর্তে ব্যবহার বিবেচনা করতে পারেন Server.Transfer

@ হ্যাকডের পড়া উচিত ছিল শুরুতে, সার্ভার.টান্সফরেক্সট আমার সমস্যাগুলি ওয়েব ম্যাট্রিক্স এবং iis7 এর সাথে সমাধান করেছে solved এবং Gracias। তাদের এটা এখানে রাখা উচিত।
জেসন সেব্রিং

উত্তর:


234

Response.Redirectব্রাউজারে কেবল একটি বার্তা (HTTP 302) প্রেরণ করে।

Server.Transfer ব্রাউজারটি কিছু না জেনেই ঘটে, ব্রাউজারটি একটি পৃষ্ঠার জন্য অনুরোধ করে, তবে সার্ভার অন্যটির সামগ্রী ফেরত দেয়।


এটি কি ওয়েব ম্যাট্রিক্স সহ সিএসএইচটিএমএল পৃষ্ঠাগুলির সাথে কাজ করে? সার্ভার করার সময় আমি এটি কাজ করতে পারি বলে মনে হয় না Server সার্ভার.স ট্রান্সফার ("~ / somepage.cshtml", সত্য) এর মতো কোনও সিএসএইচটিএমএল পৃষ্ঠায় স্থানান্তর করুন তবে অন্য ধরণের পৃষ্ঠাগুলির জন্য কাজ করে বলে মনে হচ্ছে। হ্যাঁ আমি রেজার ইনস্টল করেছি এবং পৃষ্ঠাগুলি অন্যথায় প্রত্যাশা অনুযায়ী কাজ করে।
জেসন সেব্রিং

11
আরে খুঁজে পেয়েছি। আপনাকে সিএসটিএমএল ওয়েব ম্যাট্রিক্স পৃষ্ঠাগুলির জন্য সার্ভার.টান্সফরআরয়েস্ট ব্যবহার করতে হবে।
জেসন সেব্রিং

সার্ভার.টান্সফার () কেবল শারীরিক পৃষ্ঠায় স্থানান্তর করে? যেমন। যদি আমি সার্ভারে স্থানান্তর করি rans ট্রান্সফার ("ডিফল্ট / বিভাগ 1.aspx") তবে এটির মধ্যে একটি ডিফল্ট ফোল্ডার এবং একটি বিভাগ 1, এসপেক্স পৃষ্ঠা রাখার কি পুনরুত্থিত?
আইহিমভি

95

Response.Redirect()আপনাকে একটি নতুন পৃষ্ঠায় প্রেরণ করবে, ঠিকানা বারটি আপডেট করবে এবং এটি ব্রাউজারের ইতিহাসে যুক্ত করবে। আপনার ব্রাউজারে আপনি ফিরে ক্লিক করতে পারেন।

Server.Transfer()ঠিকানা বার পরিবর্তন করে না। আপনি পিছনে আঘাত করতে পারবেন না।

আমি Server.Transfer()যখন যাচ্ছি যখন ব্যবহারকারীটি দেখতে না চাই তখন আমি ব্যবহার করি। কখনও কখনও "লোডিং" টাইপ পৃষ্ঠায়।

অন্যথায় আমি সবসময় ব্যবহার করব Response.Redirect()


75

সংক্ষিপ্ত হতে: Response.Redirectকেবল ব্রাউজারকে অন্য পৃষ্ঠাটি দেখার জন্য বলে। Server.Transferসার্ভারের অনুরোধগুলি হ্রাস করতে সহায়তা করে, ইউআরএল একই রাখে এবং কিছুটা বাগ-বাশিংয়ের সাহায্যে আপনাকে ক্যোয়ারী স্ট্রিং এবং ফর্ম ভেরিয়েবল স্থানান্তর করতে দেয়।

আমি কিছু খুঁজে পেয়েছি এবং এর সাথে একমত ( উত্স ):

Server.Transferএটি অনুরূপ যে এটি অন্য পৃষ্ঠায় যেমন একটি বিবৃতি সহ ব্যবহারকারীকে প্রেরণ করে Server.Transfer("WebForm2.aspx")। তবে বিবৃতিটির বিভিন্ন স্বতন্ত্র সুবিধা এবং অসুবিধা রয়েছে।

প্রথমত, Server.Transfer সার্ভার সংস্থান সংরক্ষণ করে অন্য পৃষ্ঠায় স্থানান্তর করা । ব্রাউজারটিকে পুনঃনির্দেশ করতে বলার পরিবর্তে এটি কেবল ওয়েব সার্ভারের "ফোকাস" পরিবর্তন করে এবং অনুরোধটি স্থানান্তর করে। এর অর্থ আপনি এতগুলি এইচটিটিপি অনুরোধগুলি পেয়ে যাচ্ছেন না, যার ফলে আপনার ওয়েব সার্ভারের উপর চাপ কমায় এবং আপনার অ্যাপ্লিকেশনগুলি দ্রুত চালিত করে।

তবে নজর দিন: কারণ "স্থানান্তর" প্রক্রিয়া কেবল সার্ভারে চলছে এমন সাইটগুলিতে কাজ করতে পারে; আপনি Server.Transferকোনও বাহ্যিক সাইটে ব্যবহারকারী প্রেরণ করতে পারবেন না । কেবল এটিই Response.Redirectকরতে পারে।

দ্বিতীয়ত, Server.Transferব্রাউজারে মূল URL টি বজায় রাখে। এটি ডেটা এন্ট্রি কৌশলগুলিকে প্রবাহিত করতে সত্যই সহায়তা করতে পারে, যদিও এটি ডিবাগ করার সময় বিভ্রান্তির সৃষ্টি করতে পারে।

এগুলি সবই নয়: Server.Transferপদ্ধতিটির একটি দ্বিতীয় প্যারামিটার রয়েছে - "প্রিজারফর্ম"। আপনি যদি এটি সেট Trueকরে থাকেন তবে যেমন একটি বিবৃতি ব্যবহার Server.Transfer("WebForm2.aspx", True)করে বিদ্যমান ক্যোয়ারী স্ট্রিং এবং যে কোনও ফর্ম ভেরিয়েবলগুলি আপনি যে পৃষ্ঠায় স্থানান্তর করছেন সেটিতে এখনও উপলব্ধ থাকবে।

উদাহরণস্বরূপ, যদি আপনার ওয়েবএফর্ম 1.এএসপিএক্সটিতে টেক্সটবক্স 1 নামে একটি টেক্সটবক্স নিয়ন্ত্রণ থাকে এবং আপনি প্রিজারফর্ম প্যারামিটারটি সত্য হিসাবে সেট করে WebForm2.aspx এ স্থানান্তরিত করেন, আপনি রেফারেন্স করে মূল পৃষ্ঠা টেক্সটবক্স নিয়ন্ত্রণের মানটি অর্জন করতে সক্ষম হবেন Request.Form("TextBox1")


10
মন্তব্যের জন্য +1 তবে এটি বিকাশকারী / নেট / এসপি / আর্টিক্যাল.পিপি / ৩৩৯৯6464১ থেকে অনুলিপি করা ভারব্যাটিম বলে মনে হচ্ছে । যদি এটি অন্য উত্স থেকে হয় তবে আপনার ইজারা দেওয়া উচিত।
জন্নো নোলান

... তবে তারা এটি অনুলিপি করেছে তাদের উচিত আপনার উদ্ধৃতি দেওয়া উচিত।
জনো নোলান

7
আমি বলেছিলাম: আমি যা কিছু পেয়েছি এবং তাতে একমত হয়েছি;
টিটিস্ট্যাম্পার

6
উত্সের সাথে লিঙ্ক করা উচিত এবং অনুলিপি করা অংশগুলির জন্য উদ্ধৃতি ফর্ম্যাটিং / হাইলাইটিং ব্যবহার করা উচিত।
ক্রিস ডব্লিউ। রিয়া

1
কীভাবে পারে maintaining the original URL... ...really help streamline data entry techniques?
জনবি

36

Response.Redirect() যখন ব্যবহার করা উচিত:

  • আমরা অনুরোধটি আমাদের সার্ভারের কিছু সাধারণ HTML পৃষ্ঠাগুলিতে বা অন্য কোনও ওয়েব সার্ভারে পুনর্নির্দেশ করতে চাই
  • আমরা প্রতিটি অনুরোধে সার্ভারে অতিরিক্ত রাউন্ডট্রিপগুলি তৈরি করার বিষয়ে চিন্তা করি না
  • আসল অনুরোধ থেকে আমাদের ক্যয়েরি স্ট্রিং এবং ফর্ম ভেরিয়েবলগুলি সংরক্ষণ করার দরকার নেই
  • আমরা চাই যে আমাদের ব্যবহারকারীরা তাঁর ব্রাউজারে নতুন পুনঃনির্দেশিত URL দেখতে সক্ষম হবেন (এবং এটির প্রয়োজনে এটি বুকমার্ক করতে সক্ষম হবেন)

Server.Transfer() যখন ব্যবহার করা উচিত:

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

2
অনেক পরিষ্কার, আমার কাছে এটি একটি গৃহীত উত্তর হিসাবে ভাল।
বালজিৎসিংহ

28

প্রতিক্রিয়া.প্রথম পৃষ্ঠা ক্লায়েন্টে আসার পরে পৃষ্ঠাটিকে অন্য পৃষ্ঠায় পুনঃনির্দেশ করে । সুতরাং ক্লায়েন্ট পুনঃনির্দেশ জানেন।

সার্ভার.টান্সফার পৃষ্ঠার বর্তমান সম্পাদন প্রস্থান করে। ক্লায়েন্ট পুনঃনির্দেশ জানেন না। এটি আপনাকে কোয়েরি স্ট্রিং এবং ফর্ম ভেরিয়েবল স্থানান্তর করতে দেয় allows

সুতরাং এটি আপনার প্রয়োজনগুলির উপর নির্ভর করে কোনটি ভাল।


1
কোনও দূষিত ব্যবহারকারীর বাইপাস করতে পারি Response.Redirectযাতে আমি ফোন করেও মূল পৃষ্ঠাটি লোড করতে পারি Response.Redirect?
14

@ নর্থথেন - প্রযুক্তির ক্ষেত্রে কখনই যে কোনও বিষয়ে আপস করা যায় - "কখনই" বলা সহজ নয় - তবে এই ক্ষেত্রে তারা কীভাবে করতে পারে - আমি বলতাম যে তারা পারত না ... তবে আমি বহুবার ভুল প্রমাণিত হয়েছি জীবনে.
জোনএইচ

23

এখানে চিত্র বর্ণনা লিখুন

"প্রতিক্রিয়া। প্রত্যক্ষ" এবং "সার্ভার.টান্সফার" পৃষ্ঠাটি সম্পাদন করার সময় ব্যবহারকারীকে এক পৃষ্ঠা থেকে অন্য পৃষ্ঠায় স্থানান্তর করতে সহায়তা করে। তবে তারা এই স্থানান্তর / পুনর্নির্দেশের উপায়টি খুব আলাদা।

আপনি যদি ভিজ্যুয়াল লোক হন এবং তত্ত্বের পরিবর্তে বিক্ষোভ দেখতে চান আমি নীচের ফেসবুক ভিডিওটি দেখতে পরামর্শ দেব যা আরও বেশি প্রদর্শনী উপায়ে পার্থক্যটি ব্যাখ্যা করে।

https://www.facebook.com/photo.php?v=762186150488997

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

"সার্ভার। ট্রান্সফার" -র নীচে স্থানান্তর কীভাবে ঘটে তার ক্রম:

1. ব্যবহারকারী একটি এএসপি.নেট পৃষ্ঠায় একটি অনুরোধ প্রেরণ করে। নীচের চিত্রটিতে অনুরোধটি "ওয়েবফর্ম 1" এ প্রেরণ করা হয়েছে এবং আমরা "ওয়েবফর্ম 2" তে নেভিগেট করতে চাই।

2. সার্ভার "ওয়েবফর্ম 1" চালানো শুরু করে এবং পৃষ্ঠার জীবনচক্র শুরু হয়। তবে পৃষ্ঠার সম্পূর্ণ জীবনচক্রটি "সার্ভার.টান্সফার" সম্পন্ন হওয়ার আগে "ওয়েবফর্ম 2" তে ঘটে।

৩. "ওয়েবফর্ম ২" পৃষ্ঠা অবজেক্ট তৈরি হয়, পূর্ণ পৃষ্ঠার জীবনচক্র কার্যকর হয় এবং আউটপুট এইচটিএমএল প্রতিক্রিয়াটি ব্রাউজারে প্রেরণ করা হয়।

এখানে চিত্র বর্ণনা লিখুন

নীচে নেভিগেশন ইভেন্টের ক্রম নিম্নলিখিত "প্রতিক্রিয়া। পুনর্নির্দেশ" এ থাকাকালীন: -

1.প্লায়েন্ট (ব্রাউজার) একটি পৃষ্ঠায় একটি অনুরোধ প্রেরণ করে। নীচের চিত্রটিতে অনুরোধটি "ওয়েবফর্ম 1" এ প্রেরণ করা হয়েছে এবং আমরা "ওয়েবফর্ম 2" তে নেভিগেট করতে চাই।

"ওয়েবফর্ম 1" এর লাইফ চক্রটি কার্যকর করা শুরু করে। কিন্তু জীবনচক্রের মধ্যে "রেসপন্স। রিডাইরেক্ট" ঘটে।

৩.এবার সার্ভার পুনর্নির্দেশের পরিবর্তে ব্রাউজারে একটি HTTP 302 কমান্ড প্রেরণ করে। এই কমান্ডটি ব্রাউজারকে বলেছে যে তাকে "ওয়েবফর্ম ২.এএসপিএক্স" পৃষ্ঠায় জিইটি অনুরোধ করতে হবে।

4. ব্রাউজার 302 কমান্ডটি ব্যাখ্যা করে এবং "Webform2.aspx" এর জন্য একটি জিইটি অনুরোধ প্রেরণ করে।

এখানে চিত্র বর্ণনা লিখুন

অন্য কথায় "সার্ভার। ট্রান্সফার" সার্ভার দ্বারা সম্পাদন করা হয়, যখন "রিসপন্স। রিডাইরেক্ট" থ্রি ব্রাউজার দ্বারা কার্যকর করা হয়। "প্রতিক্রিয়া। পুনর্নির্দেশ" পৃষ্ঠার পুনর্নির্দেশ করার জন্য দুটি অনুরোধ দরকার।

তাহলে কখন "সার্ভার.টান্সফার" ব্যবহার করবেন এবং কখন "রেসপন্স.ড্রেডাইরেক্ট" ব্যবহার করবেন?

আপনি যখন একই সার্ভারে থাকা পৃষ্ঠাগুলি নেভিগেট করতে চান তখন "সার্ভার.টান্সফার" ব্যবহার করুন, যখন আপনি বিভিন্ন সার্ভার এবং ডোমেনে থাকা পৃষ্ঠাগুলির মধ্যে নেভিগেট করতে চান তখন "রেসপন্স.ডরাইডেক্ট" ব্যবহার করুন।

এখানে চিত্র বর্ণনা লিখুন

নীচে একটি সংক্ষিপ্ত সারণি দেওয়া রয়েছে যার মধ্যে পার্থক্যগুলি কাজ করে এবং কোন পরিস্থিতিতে ব্যবহার করা উচিত।

এখানে চিত্র বর্ণনা লিখুন


দরকারী সেসব সমস্যাগুলোতে ব্যবহার Server.Transfer এবং Response.Redirect stackoverflow.com/questions/1433448/thread-was-being-aborted
Kiquenet

জন্য Server.Transfer: একই সার্ভার বা একই আইআইএস ওয়েব সাইট ?
কিকিনেট

আপনি কারণ অন্তত 6 আমার সম্পাদনার জন্য প্রয়োজনীয় অক্ষর নিম্নলিখিত অনুচ্ছেদ আপডেট করে নিন যায়নি: অন্য কথায় "Server.Transfer" সার্ভার দ্বারা মৃত্যুদন্ড কার্যকর করার সময় "Response.Redirect" দ্বারা মৃত্যুদন্ড কার্যকর করা হয় THR ব্রাউজার। "প্রতিক্রিয়া । পুনর্নির্দেশ" পৃষ্ঠার পুনর্নির্দেশ করার জন্য দুটি অনুরোধ দরকার।
পল চেউং

11

সার্ভার.স ট্রান্সফারের সৌন্দর্য হ'ল আপনি এটি দিয়ে যা করতে পারেন:

TextBox myTxt = (TextBox)this.Page.PreviousPage.FindControl("TextBoxID");

আপনি উপরের পদ্ধতিটি ব্যবহার করে আপনার পূর্ববর্তী পৃষ্ঠা থেকে যতক্ষণ না আপনি সার্ভার.টান্সফার ব্যবহার করতে পারবেন তবে প্রতিক্রিয়া নয়।প্রশাসন


10

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

দেখুন: রেসপন্স। রিডারেক্ট বনাম "301 স্থায়ীভাবে সরানো" :

আমরা সবাই রেসপন্স ব্যবহার করেছি oneএই সময় বা অন্য সময়ে পুনর্নির্দেশ। যদি কোনওভাবে ভুল জায়গায় থেকে যায় তবে দর্শনার্থীদের সঠিক দিকে নির্দেশিত করার এটি দ্রুত এবং সহজ উপায়। আপনি কি জানেন যে রেসপন্স। রিডারেক্ট "302 পাওয়া" এর একটি HTTP প্রতিক্রিয়া স্থিতি কোড প্রেরণ করে যখন আপনি সত্যিই "301 স্থায়ীভাবে স্থানান্তরিত" পাঠাতে চাইতে পারেন?

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


লিঙ্কটি কাজ করে না। পরিবর্তে এই ওয়েব.আরচিভ.অর্গ লিঙ্কটি ব্যবহার করুন।
stomy

6

স্থানান্তর পুরোপুরি সার্ভার-সাইড। ক্লায়েন্টের ঠিকানা দণ্ড স্থির থাকে। অনুরোধগুলির মধ্যে প্রসঙ্গের স্থানান্তর সম্পর্কে কিছু জটিলতা। পৃষ্ঠার হ্যান্ডলারগুলি ফ্লাশিং এবং পুনরায় চালু করা ব্যয়বহুল হতে পারে তাই আপনার পাইপলাইনের প্রথমদিকে যেমন স্থানান্তরিতকরণের সময় কোনও HTTPModule এ স্থানান্তর করুন। এমএসডিএন ডক্স সাবধানতার সাথে পড়ুন এবং এইচটিটিপি কনটেক্সট-র নতুন মানগুলি পরীক্ষা করুন এবং বুঝতে পারবেন - বিশেষত পোস্টব্যাকের পরিস্থিতিতে। আমরা সাধারণত ত্রুটি পরিস্থিতিগুলির জন্য সার্ভার.টান্সফার ব্যবহার করি।

পুনঃনির্দেশ 302 স্থিতি এবং ক্লায়েন্ট-সাইড রাউন্ডট্রিপ প্রতিক্রিয়া সহ অনুরোধটি সমাপ্ত করে এবং অভ্যন্তরীণভাবে একটি ব্যতিক্রম খায় (মাইনর সার্ভার পারফ হিট - আপনি দিনে কতগুলি করেন তা নির্ভর করে) ক্লায়েন্ট তারপরে নতুন ঠিকানায় নেভিগেট করে। ব্রাউজারের ঠিকানা দণ্ড এবং ইতিহাসের আপডেট ইত্যাদি Cli ক্লায়েন্ট অতিরিক্ত রাউন্ডট্রিপের জন্য মূল্য দেয় - বিলম্বের উপর নির্ভর করে ব্যয় পরিবর্তিত হয়। আমাদের ব্যবসায় আমরা ব্যতিক্রম ব্যয় এড়াতে আমাদের নিজস্ব মডিউলটি অনেকগুলি পুনঃনির্দেশ করি।


6

উপরে বর্ণিত অনেকগুলি পার্থক্য রয়েছে। সর্বোপরি, আরও একটি পার্থক্য রয়েছে। Response.Redirect()ব্যবহারকারীকে যে কোনও পৃষ্ঠায় পুনর্নির্দেশ করতে ব্যবহার করা যেতে পারে যা আবেদনের অংশ নয় তবে Server.Transfer()কেবলমাত্র অ্যাপ্লিকেশনের মধ্যেই ব্যবহারকারীকে পুনর্নির্দেশ করতে ব্যবহার করা যেতে পারে।

//This will work.
Response.Redirect("http://www.google.com");

//This will not work.
Server.Transfer("http://www.google.com");

5

রেসপন্স.রেডাইরেক্ট আরও ব্যয়বহুল কারণ এটি কোথায় যেতে হবে তা নির্ধারণের জন্য সার্ভারে একটি অতিরিক্ত ট্রিপ যুক্ত করে।

সার্ভার.টান্সফার আরও কার্যকর তবে এটি ইউরালটির কাছে কিছুটা ভুল হতে পারে কারণ ইউরাল শারীরিকভাবে পরিবর্তন করে না।

আমার অভিজ্ঞতায় পারফরম্যান্সের পার্থক্যটি পরবর্তী পদ্ধতির ব্যবহারের পক্ষে যথেষ্ট তাত্পর্যপূর্ণ নয়


4

সার্ভার.টান্সফার ক্লায়েন্ট ব্রাউজারে ইউআরএল পরিবর্তন করে না, তাই কার্যকরভাবে ব্রাউজারটি জানে না আপনি অন্য সার্ভার-সাইড হ্যান্ডলারে পরিবর্তন করেছেন। প্রতিক্রিয়া edএরদীপর ব্রাউজারকে একটি ভিন্ন পৃষ্ঠাতে যেতে বলে, তাই শিরোনামবারের ইউআরএল পরিবর্তন হয়।

সার্ভার.টান্সফারটি সামান্য দ্রুত হওয়ায় এটি সার্ভারে একটি রাউন্ডট্রিপ এড়িয়ে যায়, তবে আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে ইউআরএল পরিবর্তন না করা আপনার পক্ষে হয় ভাল বা খারাপ হতে পারে।


4

প্রতিক্রিয়া R প্রত্যাহার: ব্রাউজারকে বলে যে অনুরোধ করা পৃষ্ঠাটি কোনও নতুন স্থানে পাওয়া যাবে। ব্রাউজারটি ব্রাউজারে নতুন পৃষ্ঠাটির বিষয়বস্তু লোড করার জন্য আরেকটি অনুরোধ শুরু করে। এটি ব্রাউজার দ্বারা দুটি অনুরোধের ফলাফল।

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


3

স্থানান্তর () সম্পর্কে আরও বিশদ, এটি আসলে সার্ভার.এক্সেকিউট () + রেসপন্স.এন্ড (), এর উত্স কোডটি নীচে (মনো / .NET 4.0 থেকে) রয়েছে:

public void Transfer (string path, bool preserveForm)
{
    this.Execute (path, null, preserveForm, true);
    this.context.Response.End ();
}

এবং এক্সিকিউট () এর জন্য, এটি কী চালাতে হয় তা হল প্রদত্ত পথটির হ্যান্ডলার , দেখুন

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

আপনি এক্সিকিউট পদ্ধতির পরিবর্তে পুনঃনির্দেশ পদ্ধতিটি ব্যবহার করে পুনরায় অনুমোদনের জন্য বাধ্য করতে পারেন । পুনর্নির্দেশ ক্লায়েন্ট-সাইড রিডাইরেক্ট সম্পাদন করে যেখানে ব্রাউজারটি নতুন সংস্থানটির অনুরোধ করে। যেহেতু এই পুনর্নির্দেশটি সিস্টেমে প্রবেশ করা একটি নতুন অনুরোধ, এটি ইন্টারনেট তথ্য পরিষেবাদি (আইআইএস) এবং এএসপি.এনইটি সুরক্ষা নীতি উভয়েরই সমস্ত প্রমাণীকরণ এবং অনুমোদনের যুক্তিকে সাপেক্ষে।

- এমএসডিএন থেকে


2

রেসপন্স.রেডরেটরে একটি অতিরিক্ত রাউন্ড ট্রিপ জড়িত এবং অ্যাড্রেস বার আপডেট করে।

সার্ভার.টান্সফারের কারণে ঠিকানা বারটি পরিবর্তিত হয় না, সার্ভার অন্য পৃষ্ঠার সামগ্রীর অনুরোধে সাড়া দেয়

যেমন

Response.Redirect: -

  1. ক্লায়েন্টে ব্রাউজারটি একটি পৃষ্ঠার জন্য অনুরোধ করে http: //InitiallyRequestedPage.aspx
  2. সার্ভারে 302 পুনর্নির্দেশ ঠিকানাটি http: //AnotherPage.aspx পাস করার মাধ্যমে অনুরোধটির প্রতিক্রিয়া জানায়
  3. ক্লায়েন্টে ব্রাউজারটি http: //AnotherPage.aspx ঠিকানায় দ্বিতীয় অনুরোধ করে ।
  4. সার্ভারে http: //AnotherPage.aspx থেকে লিখিত সামগ্রীর সাথে প্রতিক্রিয়া জানায়

Server.Transfer: -

  1. ক্লায়েন্ট ব্রাউজারে একটি পৃষ্ঠার জন্য অনুরোধ করুন http: //InitiallyRequusedPage.aspx
  2. সার্ভারে সার্ভারে.পরে স্থানান্তর করুন : http: //AnotherPage.aspx
  3. সার্ভারে প্রতিক্রিয়াটি http: //InitiallyRequestedPage.aspx থেকে অনুরোধটি http: //AnotherPage.aspx এর মাধ্যমে ফিরে আসে

Response.Redirect

পেশাদাররা: - বিশ্রামের - এটি ঠিকানা বার পরিবর্তন করে, ঠিকানাটি অভ্যন্তরীণ অনুরোধগুলির স্থিতির পরিবর্তনগুলি রেকর্ড করতে ব্যবহার করা যেতে পারে।

কনস: - ধীর - ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি অতিরিক্ত রাউন্ড ট্রিপ রয়েছে। ক্লায়েন্ট এবং সার্ভারের মধ্যে যথেষ্ট বিলম্ব থাকলে এই ব্যয়বহুল হতে পারে।

Server.Transfer

পেশাদাররা: - দ্রুত

কনস: - রাজ্যটি হারিয়েছে - আপনি যদি সার্ভার ব্যবহার করছেন তবে পোস্ট ব্যাকগুলির প্রতিক্রিয়া হিসাবে অ্যাপ্লিকেশনের অবস্থার পরিবর্তন করতে ট্রান্সফার করুন, পৃষ্ঠাটি পুনরায় লোড করা হলে সেই রাষ্ট্রটি হারিয়ে যাবে, যেমন ঠিকানা দণ্ডটি যেমন ছিল তেমনই হবে প্রথম অনুরোধে


0

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

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

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