সহজ উপায় হ'ল অ্যাপ্লিকেশনটি পাওয়া ApplicationInstanceএবং এর Contextসম্পত্তিটি ব্যবহার করা :
// httpContextBase is of type HttpContextBase
HttpContext context = httpContextBase.ApplicationInstance.Context;
( মন্তব্যগুলিতে এটি উল্লেখ করেছেন ইসমাইল স্মারনোকে ধন্যবাদ )
আসল উত্তর:
আপনি করতে পারেন, বিশেষত যদি আপনার HttpContextBaseহাতে দেওয়া উদাহরণটি HttpContextWrapperরান-টাইমে টাইপের হয়। নীচের উদাহরণটি ব্যাখ্যা করে যে আপনি কীভাবে এটি করতে পারেন। এটি অনুমান করে যে আপনার কাছে এমন একটি পদ্ধতি আছে Fooযা প্রসঙ্গটি গ্রহণ করে HttpContextBaseতবে তৃতীয় পক্ষের অ্যাসেমব্লিতে এমন একটি পদ্ধতি কল করা দরকার (যাতে আপনার সংশোধন করার সৌভাগ্য হয় না) যা প্রসঙ্গটি টাইপ হওয়ার প্রত্যাশা করে HttpContext।
void Foo(HttpContextBase context)
{
var app = (HttpApplication) context.GetService(typeof(HttpApplication));
ThirdParty.Bar.Baz(app.Context);
}
// Somewhere in assembly and namespace ThirdParty,
// in a class called Bar, there is Baz expecting HttpContext:
static void Baz(HttpContext context) { /* ... */ }
HttpContextBaseGetServiceসমর্থনের ফলস্বরূপ বলা একটি পদ্ধতি রয়েছে IServiceProvider। GetServiceএর ওভাররাইড HttpContextWrapperকরার প্রতিনিধিদের GetServiceআবৃত বাস্তবায়ন HttpContextউদাহরণস্বরূপ। GetServiceবাস্তবায়ন HttpContextমত স্বাভাবিক সন্দেহভাজন জন্য আপনার জিজ্ঞাসিত প্রশ্নের আপনি করতে পারবেন HttpApplication, HttpRequest, HttpResponseইত্যাদি। এটি ঠিক তখন ঘটে থাকে যার HttpApplicationএকটি প্রচ্ছদ নামক সম্পত্তি রয়েছে এবং এটি একটি উদাহরণ দেয় HttpContext। তাই এক আবৃত পায় HttpContextজিজ্ঞাসা করে দৃষ্টান্ত HttpContextBaseজন্য HttpApplicationমাধ্যমে GetServiceঅনুসৃত পড়ার মাধ্যমে Contextফিরে সম্পত্তিরHttpApplication উদাহরণস্বরূপ।
এর বিপরীতে HttpContextBase, এর GetServiceসর্বজনীন সদস্য হিসাবে উপস্থিত হয় না HttpContextতবে এটি হ'ল স্পষ্টতাকে HttpContextপ্রয়োগ IServiceProvider.GetServiceকরেHttpContextBase করে।
মনে রাখবেন যে Fooএটি আর পরীক্ষাযোগ্য নয় কারণ এটি অন্তর্নিহিত আবরণটি সক্ষম করতে নির্ভর করেHttpContext সময় এবং এটি প্রথমে নকল / স্টাবের পক্ষে অসম্ভব is এই উত্তরের মূল বিষয়টি, তবে এই প্রশ্নটি সম্বোধন করা, "আমি কীভাবে এইচটিটিপি কনটেক্সটবেস থেকে একটি এইচটিপিপেক্সটেক্সট অবজেক্ট পাব?", আক্ষরিকভাবে । ইলাস্ট্রেটেড টেকনিক সেই পরিস্থিতিতে কার্যকর যেখানে আপনি নিজেকে এমন উপাদানগুলির মধ্যে স্যান্ডউইচড খুঁজে পান যেখানে আপনার প্রয়োজনীয় সংশোধন করার বিলাসিতা থাকে না।