এইচটিটিপি কনটেক্সট থেকে বর্তমান সিস্টেম. ওয়েবে.ইউ.আই.পেজ পান?


85

এটি আসলে একটি দুটি অংশ প্রশ্ন। প্রথমত, এইচটিটিপি কনটেক্সট.কন্টেন বর্তমান সিস্টেম.ইউআই.পেজ অবজেক্টের সাথে কি মিল?

এবং দ্বিতীয় প্রশ্ন, যা সম্ভবত প্রথমটির সাথে সম্পর্কিত, আমি কেন বর্তমান পৃষ্ঠাটি একটি ইন্টারফেস প্রয়োগ করে তা নীচের ব্যবহার করতে পারি না:

private IWebBase FindWebBase()
{
    if (HttpContext.Current as IWebBase != null)
    {
        return (IWebBase)HttpContext.Current.;
    }
    throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}

সাধারণ প্রসঙ্গটি হ'ল কিছু নিয়ন্ত্রণের এটি জানতে হবে যে সেগুলি শেয়ারপয়েন্ট ওয়েবপার্ট হিসাবে কার্যকর করছে কিনা, বা অ্যাস্প.নেট ফ্রেমওয়ার্কের অংশ হিসাবে।

নিয়ন্ত্রণটি নিজের কাছে রেফারেন্স দেওয়ার প্রয়োজনে এবং নিয়ন্ত্রণের পৃষ্ঠা সম্পত্তিটি পরীক্ষা করে আমি সমস্যার সমাধান করেছি, তবে কেন আমি উপরোক্ত কাজ করে না তা আগ্রহী।

সংকলক ত্রুটিটি হ'ল: System.Web.HttpContext এ রূপান্তর করতে পারবেন না ... IWebBase একটি রেফারেন্স রূপান্তর, বক্সিং রূপান্তর, আনবক্সিং রূপান্তর, মোড়ানো রূপান্তর বা নাল ধরন রূপান্তর মাধ্যমে।

উত্তর:


144

না, এইচটিটিপি কনটেক্সট-এ এমএসডিএন থেকে। বর্তমান: "বর্তমান এইচটিটিপি অনুরোধের জন্য এইচটিটিপি কনটেক্সট অবজেক্টটি পাওয়া বা সেট করে।"

অন্য কথায় এটি একটি HTTPContext অবজেক্ট, কোনও পৃষ্ঠা নয়।

আপনি ব্যবহার করে পৃষ্ঠা অবজেক্টে এইচটিটিপি কনটেক্সট এর মাধ্যমে পেতে পারেন:

Page page = HttpContext.Current.Handler as Page;

if (page != null)
{
     // Use page instance.
}

4
ডাউন-ভোটেড কারণ ভুল। এইচটিটিপি কনটেক্সট.কন্টেনার.কন্টেনহ্যান্ডলার সহ উত্তরটি সঠিক! আপনি যদি একটি Server.Transfer না, HttpContext.Current.Handler পূর্ববর্তী পাতা হতে হবে, HttpContext.Current.CurrentHandler বর্তমান পৃষ্ঠাটি থাকবে না
মাইক

37

আপনি খুঁজছেন HttpContext.Handler। যেহেতু পৃষ্ঠা আইএইচটিপিহ্যান্ডলার প্রয়োগ করে, আপনি বর্তমানে সম্পাদনকারী পৃষ্ঠার একটি রেফারেন্স পাবেন You আপনাকে এটি castালাই করতে হবে, বা কমপক্ষে আপনি যে নির্দিষ্ট ধরণের সন্ধান করছেন তাতে এটি কাস্ট করার চেষ্টা করবেন।

HttpContext.Currentকেবলমাত্র HTTPContext এর একক দৃষ্টিকোনটি দেয়। অতএব, এটি একটি পৃষ্ঠা নয় এবং কখনই হতে পারে না।


4
এটি পড়ার জন্য কেবল একটি নোট। নীচের উত্তরটি একই তবে উদাহরণ সহ (যেমন আপনি HTTPContext.Current.Handler ব্যবহার করেন)।
মাইক নেলসন

15

আপনি HttpContext.Current.CurrentHandlerবর্তমানে সম্পাদন করা সুনির্দিষ্ট পৃষ্ঠাটি চাইলে আপনি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ডিফল্ট.এএসপিএক্স এর জন্য একটি অনুরোধ প্রেরণ করা হয়েছে, তবে একটি ত্রুটি নিক্ষেপ করা হয় এবং আপনি Response.Transferআপনার কাস্টম ত্রুটিহ্যান্ডেলআরএসপিএক্স পৃষ্ঠায় একটি করেন। CurrentHandlerত্রুটিহ্যান্ডলিআরএসপিএক্সের উদাহরণটি (যদি ত্রুটির পরে ডাকা হয়) HttpContext.Current.Handlerফিরিয়ে দেবে যেখানে ডিফল্ট.এএসপিএক্স এর উদাহরণ উপস্থিত হবে।


0

দয়া করে আমার উত্তরটি দেখুন:
কেন এইচটিটিপি কনটেক্সট C বর্তমান? হ্যান্ডলার নাল?

আপনার সমস্যা সমাধান হতে পারে।


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