আইএমভিসি বিল্ডার অ্যাডজসনঅ্যাপশনগুলি কোথায় গেল? নেট কোর 3.0?


119

আমি সবেমাত্র আমার এএসপি ওয়েব এপিআই প্রকল্পটি আপগ্রেড করেছি। Net core 2.0to 3.0। আমি ব্যবহার করছিলাম

     services.AddMvc()
             .AddJsonOptions(options =>options.SerializerSettings.ContractResolver 
                                       = new DefaultContractResolver());

এর আগে সিরিয়ালযুক্ত জেএসএনের লো-কেসিং নিশ্চিত করতে।

3.0 এ আপগ্রেড করার পরে আমি এই ত্রুটিটি পেয়েছি:

ত্রুটি CS1061 'IMVcBuilder' তে 'AddJsonOptions' এর সংজ্ঞা নেই এবং অ্যাক্সেসযোগ্য এক্সটেনশন পদ্ধতি 'অ্যাডজেসনঅপশনস' 'IMVcBuilder' টাইপের প্রথম আর্গুমেন্টটি পাওয়া যায়নি (আপনি কি কোনও নির্দেশিকা ব্যবহার করছেন বা বিধানসভা রেফারেন্স মিস করছেন?)

Asp.Net কোর 2.2 তে এমভিসিজেসনঅ্যাপশনগুলির জন্য অ্যাডজসনঅপশনস অনুসারে অ্যাডজসনঅ্যাপশন এক্সটেনশন পদ্ধতিটি মাইক্রোসফ্ট.এএসপনেটকোর.এমভিসি.ফর্ম্যাটটার্স.জসন নুগেট প্যাকেজ দ্বারা সরবরাহ করা হয়েছে । আমি এটি ইনস্টল / পুনরায় ইনস্টল করার চেষ্টা করেছি কিন্তু এখনও পদ্ধতিটি সমাধান করতে পারি না। মজার বিষয় হল, ইন্টেলিজেন্স কেবল মাইক্রোসফ্ট.এস্পনেটকোর.এমভিসি.ফরমেটারগুলি দেখায়। আমি যখন জসন নুগেট প্যাকেজটি যুক্ত করেছিলাম তখনও আমি যখন ব্যবহারের বিবৃতিটি যুক্ত করার চেষ্টা করি তখন এক্সএমএল

কোন ধারণা কি চলছে? ডকুমেন্টেশন জন্য AddJsonOptions শুধুমাত্র নেট 2.2 পর্যন্ত যায় তাই সম্ভবত পদ্ধতি অন্য কিছু কনফিগারেশন প্রক্রিয়া পক্ষে 3.0 অবচিত হয়েছে?

উত্তর:


203

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

Json.NET এর পরিবর্তে, ASP.NET কোর 3.0 এবং .NET কোর 3.0 একটি আলাদা জেএসওএন এপিআই অন্তর্ভুক্ত যা পারফরম্যান্সে কিছুটা আরও ফোকাস করে। "নেট কোর 3.0 এ জেএসওএন এর ভবিষ্যত" সম্পর্কে ঘোষণাপত্রে আপনি এটি সম্পর্কে আরও জানতে পারেন ।

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

আপনার ASP.NET কোর 3.0 প্রকল্পটি Json.NET এর সাথে পুনরায় কনফিগার করার জন্য, আপনাকে একটি নিউগেট রেফারেন্স যুক্ত করতে হবে Microsoft.AspNetCore.Mvc.NewtonsoftJson, এটি হল প্যাকেজ যা সমস্ত প্রয়োজনীয় বিট অন্তর্ভুক্ত করে। তারপরে, স্টার্টআপের ক্ষেত্রে ConfigureServicesআপনাকে এমভিসিটি এটির মতো কনফিগার করতে হবে:

services.AddControllers()
    .AddNewtonsoftJson();

এটি এমভিসি নিয়ন্ত্রক সেট আপ করে এবং নতুন নতুন এপিআইয়ের পরিবর্তে জসন.এনইটি ব্যবহার করতে এটি কনফিগার করে। নিয়ন্ত্রকদের পরিবর্তে, আপনি একটি পৃথক এমভিসি ওভারলোডও ব্যবহার করতে পারেন (উদাহরণস্বরূপ দেখা বা রেজার পৃষ্ঠাগুলি সহ নিয়ন্ত্রকদের জন্য)। এই AddNewtonsoftJsonপদ্ধতির একটি ওভারলোড রয়েছে যা আপনাকে এএসপি.নেট AddJsonOptionsকোর 2.x. তে ব্যবহার করার মতো Json.NET বিকল্পগুলি কনফিগার করতে দেয় allows

services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
    });

41
বাড়িতে যাঁরা অনুসরণ করছেন তাদের জন্য ... কোনও প্রকল্প স্থানান্তর করার সময় আপনার "অ্যাডনিউটসোনফটজসন" এক্সটেনশান পেতে "মাইক্রোসফ্ট.এএসপনেটকোর.এমভিসি.নউভটনসফটজসন" এ একটি নুগেট রেফারেন্স যুক্ত করতে হতে পারে। লেখার সময় এটিতে "ভিজুয়াল স্টুডিও নুগেট ম্যানেজার ব্যবহার করছেন কিনা তা পরীক্ষা করা দরকার" অন্তর্ভুক্ত প্রিরিলেজগুলি।
নিলম্যাকমুলেন

1
নোট করুন যে আমি এখনও আসল অ্যাপ্লিকেশনগুলি সহ এএসপি.নেট কোর 3 এ স্থানান্তরিত করার পরামর্শ দেব না। আপনি যদি কেবল চারপাশে খেলতে চান তবে নিশ্চিত, তবে চূড়ান্ত প্রকাশের আগে কয়েকটি চলন্ত বিট এখনও রয়েছে, তাই আপনি যদি তাড়াতাড়ি স্থানান্তর করতে চান তবে আপনাকে তা মনে রাখতে হবে।
13:38

1
এই করতে পারেন ট্রিগার চেক "সমলয় অপারেশন অননুমোদিত হয়" stackoverflow.com/questions/47735133/... আরও তথ্যের জন্য
verbedr

8
আমার AddNewtonsoftJsonজন্য অনুপস্থিত, এমনকি রেফারেন্স Microsoft.AspNetCore.Mvc.NewtonsoftJsonউল্লেখ করে।
সা Saeedদ নেমতি

2
@ সিভেনমোর নতুন সিরিয়ালাইজারে আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা এট্রিবিউট সেট ব্যবহার করা হয়েছে। আপনি নেমস্পেস [JsonIgnore]থেকে ব্যবহার করতে পারেন System.Text.Json.Serialization
poke

21

এটি আমার পক্ষে কাজ করেছিল, ব্যবহার করার সময় .Net Core 3:

services.AddMvc().AddJsonOptions(o =>
{
    o.JsonSerializerOptions.PropertyNamingPolicy = null;
    o.JsonSerializerOptions.DictionaryKeyPolicy = null;
});

আমি ধরে নিচ্ছি লাইনটি হওয়া উচিত:o.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
গ্র্যান্ডাইজার

1
হ্যাঁ আমাকেও, তবে তা হয় না। এই উত্তর যদিও আমার জন্য কাজ করে।
মার্টিন

2
দরকার নেই o.JsonSerializerOptions.DictionaryKeyPolicy = null;এবংo.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
শাহর শোকরানী

আমি আশা করি আমি এই উত্তরটি ব্যবহার করতে পারতাম, তবে আমার অ্যাপ্লিকেশনটি নিউটনসফট বৈশিষ্ট্যগুলি ব্যবহার করে তৈরি করা হয়েছিল, যা নতুন এমএস সিরিয়ালাইজার উপেক্ষা করে, এর অর্থ হ'ল আমাকে অ্যাডনিউসটোনসফটজসনের সাহায্যে নিউটনসফ্ট সিরিয়ালাইজার ব্যবহার চালিয়ে যেতে হবে। সম্ভবত এমএস নিউটনসফট বৈশিষ্ট্যগুলিকে সম্মান করার জন্য একটি বিকল্প যুক্ত করতে পারে, তবুও তারা যে প্রতিশ্রুতি দিচ্ছে তার পারফরম্যান্স লাভ পেতে পারে।
এরিক

@ এরিক হ্যাঁ আপনি ঠিকই বলেছেন তবে বেশিরভাগ পরিস্থিতিতে নিউটনসফট অভিনয়ই যথেষ্ট।
মোহাম্মদ ওলফাতমিরি

0

এটি সাহায্য করবে

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers().AddJsonOptions(options=> {  options.JsonSerializerOptions.PropertyNamingPolicy = null;
                 options.JsonSerializerOptions.DictionaryKeyPolicy = null;

            });

            services.AddDbContext<PaymentDetailContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.