কনফিগার সার্ভিস পদ্ধতিতে আইহোস্টিং পরিবেশে অ্যাক্সেস করা হচ্ছে


104

আমার ConfigureServicesবর্তমান হোস্টিং পরিবেশের নামটি 'ডেভলপমেন্ট' কিনা তা পদ্ধতিটি পরীক্ষা করা দরকার ।

সুতরাং IHostingEnvironment.IsDevelopment()পদ্ধতি ব্যবহার করা আমার পক্ষে ঠিক হতে পারে তবে কনফিগার পদ্ধতির বিপরীতে আমার কাছে নেই IHostingEnvironment env

উত্তর:


132

IHostingEn পরিবেশ চালিয়ে যাওয়ার জন্য কেবল স্টার্টআপ ক্লাসে একটি সম্পত্তি তৈরি করুন। স্টার্টআপ কনস্ট্রাক্টারে সম্পত্তি সেট করুন যেখানে আপনার ইতিমধ্যে অ্যাক্সেস রয়েছে, তারপরে আপনি কনফিগার সার্ভিস থেকে সম্পত্তিটি অ্যাক্সেস করতে পারবেন


36
যদিও Asp.Net Core 2.0 এর নতুন প্রকল্প টেমপ্লেটগুলি স্টার্টআপ কনস্ট্রাক্টরে "IHostingEn ਵਾਤਾਵਰਣ env" পরামিতিটি অন্তর্ভুক্ত না করে, এটি নির্দিষ্ট করা যেতে পারে এবং এটি সঠিকভাবে ইনজেকশন দেওয়া হবে।
অগস্টো ব্যারেটো

4
কেন ConfigureServicesএটি অসম্ভব?
আলেকসান্দ্রো

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

@ মারকজি দুর্ভাগ্যক্রমে উত্তরটি মুছে ফেলা হয়েছে ... এর প্রশ্নটি এইটির সদৃশ হিসাবে চিহ্নিত হয়েছে। তাই এখানে অন্তর্ভুক্ত ...
রিচার্ড

31

এটির সদৃশ হিসাবে চিহ্নিত প্রশ্ন থেকে এখানে অনুলিপি করা হয়েছে এবং মোছা হয়েছে । এ -সিটারে ক্রেডিট ।

আপনি অ্যাক্সেস করতে চান তাহলে IHostingEnvironmentConfigureServicesআপনি কন্সট্রাকটর মাধ্যমে এটি উদ্বুদ্ধ এবং পরবর্তী অ্যাক্সেসের জন্য এটি সংরক্ষণ করতে হবে ConfigureServices:

public class Startup
{
    public Startup(IConfiguration configuration, IHostingEnvironment environment)
    {
        Configuration = configuration;
        Environment = environment;
    }

    public IConfiguration Configuration { get; }

    public IHostingEnvironment Environment { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        System.Console.WriteLine($"app: {Environment.ApplicationName}");
    }

    // rest omitted
}

হাই, এটি কোনও বড় বিষয় নয় তবে স্ট্রিং ফর্ম্যাটেিং environmentহ'ল লোয়ার কেস, যেখানে সম্পত্তি বলে মনে হচ্ছে Environment
timmi4sa

4
@ বেনস্মিথ আমি বিশ্বাস করি আপনার টাইপো আছে। তুমি তোমার বিবৃতি "IHostingEnvironment এখন অপ্রচলিত এবং IHostingEnvironment পরিবর্তে ব্যবহার করা উচিত মধ্যে IHostingEnvironment পুনরাবৃত্তি কি IHostingEnvironment জন্য সঠিক প্রতিস্থাপন।?
ব্লেক

দোহ! ভাল স্পট @ ব্ল্যাক। আমি আমার আগের মন্তব্য মুছে ফেলব। আমার মন্তব্যটি পড়া উচিত ছিল "আইহোস্টিংএন্টারভায়ারমেন্ট এখন অপ্রচলিত, পরিবর্তে আইউবহোস্টএনভায়রনমেন্ট ব্যবহার করা উচিত"।
বেন স্মিথ

এবং অতিরিক্ত পরিষ্কার করার জন্য, এটি IHostingEnvironmentকি কেবল অচল যে বলা উচিত নয় .Net Core 3.0? (আমি এমন একটি 'হোম টেস্ট টেস্ট' নিয়ে কাজ করছি services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);যা ConfigureServices()পদ্ধতির অভ্যন্তরে কল করে এবং আইহোস্টিংএএনভায়রনমেন্ট ঠিকঠাক কাজ করছে
স্কট

পছন্দ করুন যেহেতু এই প্রশ্নোত্তর .NET কোর ২.x সময় ফ্রেম থেকে আসে (যা বেশ কিছু প্রকল্প বেশ কিছু সময়ের জন্য ব্যবহার করা অবিরত থাকবে) এটি এখনও প্রয়োগ হয়।
রিচার্ড

3

IHostingEnvironment কোর ৩.১ এ অবহিত করা হয়েছে

        private readonly IWebHostEnvironment _env;
   
        public Startup(IConfiguration configuration, IWebHostEnvironment env)
        {
            _env = env;
            Configuration = configuration;
        }

কৌশলটি করা উচিত ...

তারপরে _env.IsDevelopment()...


0

আপনি যদি কোনও Startupক্লাস ব্যবহার না করে থাকেন এবং .Configure()সরাসরি কল করছেন , আপনি প্রবেশ IHostingEnvironmentবা IWebHostEnvironmentব্যবহার করতে পারবেন GetService:

এএসপি.নেট কোর 2.2:

.Configure(app => {
    var hostingEnvironment = app.ApplicationServices.GetService<IHostingEnvironment>();
    if (hostingEnvironment?.IsDevelopment() == true)
    {
        app.UseDeveloperExceptionPage();
    }

    // .. Other stuff
});

এএসপি.নেট কোর 3.x:

.Configure(app => {
    var hostingEnvironment = app.ApplicationServices.GetService<IWebHostEnvironment>();
    if (hostingEnvironment?.IsDevelopment() == true)
    {
        app.UseDeveloperExceptionPage();
    }

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