মাইক্রোসফ্ট.এএসপনেটকোর.এমভিসি.এমভিসিজেসনস্পশনগুলি 'মেমসোসফট.এএসপনেটকোর.এমভিসি.ফর্ম্যাটরস.জসন, সংস্করণ = 3.0.0.0


14

আমি netstandard2.1আমার netcoreapp3.0ওয়েব অ্যাপ্লিকেশন লাইব্রেরি ব্যবহার করছি । আমার পরিষেবাটি যুক্ত করার সময় Startup, আমি নীচের ত্রুটিটি পেয়ে যাচ্ছি:

মাইক্রোসফ্ট.এএসপনেটকোর.এমভিসি.এমভিসিজেসনস্পশনগুলি 'মেমসোসফট.এএসপনেটকোর.এমভিসি.ফর্ম্যাটরস.জসন, সংস্করণ = 3.0.0.0

আমি Microsoft.AspNetCore.Mvcআমার ক্লাস লাইব্রেরিতে ২.২.০ প্যাকেজ থেকে কিছু বৈশিষ্ট্যও ব্যবহার করছি ।

এখানে আমার গ্রন্থাগার .csproj,

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
  </ItemGroup>

</Project>

এখানে ServiceExtensionsআমার পাঠাগার থেকে আমার ক্লাস,

public static class ServiceExtensions
{
    public static IMvcBuilder AddMyLibrary(this IMvcBuilder builder)
    {
        builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        builder.AddJsonOptions(options =>
        {
            options.SerializerSettings.ContractResolver = new DefaultContractResolver();
        });
        builder.Services.ConfigureOptions<ConfigureLibraryOptions>();

        return builder;
    }
}

এখানে আমার ConfigureLibraryOptionsক্লাস,

public class ConfigureLibraryOptions : IConfigureOptions<MvcOptions>
{
    public void Configure(MvcOptions options)
    {
        options.ModelBinderProviders.Insert(0, new CustomBinderProvider());
    }
}

এখানে ConfigureServicesথেকে Startup,

services.AddControllersWithViews().AddMyLibrary();

আমি কেন এই ত্রুটিটি পাচ্ছি এবং এটিকে কীভাবে সমাধান করবেন তাতে সহায়তা করুন?

উত্তর:


6

আপনার ত্রুটি হওয়ার কারণটি MvcJsonOptions। নেট কোর 3.0 এ সরানো হয়েছে; আপনি এখানে ব্রেকিং পরিবর্তন সম্পর্কে আরও পড়তে পারেন ।


এর অর্থ আমি ২.২.০ এর netstandard2.1রেফারেন্স সহ ক্লাস লাইব্রেরি ব্যবহার করতে পারি না ? পরিবর্তে আমি পরিবর্তন করা উচিত করতে হবে এবং একটি যোগ করতে ? Microsoft.AspNetCore.Mvcnetcoreapp3.0netstandard2.1netcoreapp3.0FrameworkReferenceMicrosoft.AspNetCore.App
আঙুলগুলি 10

50

আমি এটি ওপি-র সমস্যা সমাধান করে কিনা তা নিশ্চিত নই, তবে আপনি যখন সোশবাকল 4 ইন। নেট কোর 3 ব্যবহার করেন তখন এই ত্রুটিটিও ঘটে The

<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0" />

তারপরে আপনাকে এটি স্টার্টআপ। সি-তে আপগ্রেড করতে হবে। সাধারণত এর সাথে ক্লাসের উপসর্গ জড়িত থাকে যা OpenApiউদাহরণস্বরূপ সংকলন করে না

options.SwaggerDoc("v1" new Info ...

হয়ে

options.SwaggerDoc("v1", OpenApiInfo

এছাড়াও OpenApiSecuritySchemeহয়েApiKeyScheme

Https://github.com/domaindrivendev/Swashbuckle.AspNetCore এও ডক্স দেখুন


Versionঅবজেক্টের জন্য সম্পত্তি OpenApiInfoবলে যে এটি সংজ্ঞায়িত করা আবশ্যক। আমি যদি এটি সংজ্ঞায়িত করতে না যায় তবে সোয়াগার দ্বারা উত্পন্ন UI তে আমার অ্যাপ্লিকেশনটির নামের পাশে 2 টি বিশেষ লেবেল প্রিন্ট না করা ছাড়াও সমস্ত কিছু কাজ করে ((এর মধ্যে একটিতে আমরা যে সংস্করণটি বাদ দিয়েছি, অন্যটি রয়েছে other এর OAS3অর্থ কী?)। এটি কেন প্রয়োজন, এবং আমরা এটি দিয়ে কী বোঝাতে চাই? আপনি যে দস্তাবেজগুলিতে লিঙ্ক করেছেন, সেটিকে এটি হিসাবে সংজ্ঞায়িত করা হয়েছে v1। এটি কি এমনভাবেই থাকতে পারে বা এটি একটি নিছক উদাহরণ - পরিবর্তে আমাদের পরিবর্তে আমাদের অ্যাপ্লিকেশনটির সংস্করণটি সংরক্ষণ করা উচিত । এটি যে কোনও কিছু হতে পারে, যেমন0.0.1a-ffg
স্পিরিটবিজ

@ সাপোর্টপোর্ট মনিকা - স্পিরিটোব: এটি swagger.json ফাইলের তথ্য অবজেক্টে যায়। এটি প্রয়োজনীয় কারণ এটি চশমা দ্বারা প্রয়োজনীয়। আমার কখনই এটি "ভি 1" থেকে পরিবর্তন করার প্রয়োজন হয়নি। আপনি এখানে অফিসিয়াল ডক্সে
লি রিচার্ডসন

থ্যাঙ্কস, আপনি আমার সমস্যার সমাধান করেছেন
D__ 14

3

নেটস্ট্যান্ডার্ড ২.১ থেকে নেটকোয়ার্যাপ ৩.০ এমভিসিজেসনঅ্যাপশনস -> এমভিসি নিউটোনসফটজসনঅ্যাপশন

public IServiceProvider ConfigureServices(IServiceCollection services)
{
            //MVC
            services.AddControllersWithViews(options =>
            {
            }).AddNewtonsoftJson();

            services.PostConfigure<MvcNewtonsoftJsonOptions>(options => {
                options.SerializerSettings.ContractResolver = new MyCustomContractResolver()
                {
                    NamingStrategy = new CamelCaseNamingStrategy()
                };
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            });
}

1
এই উত্তরটির ব্যাপক উন্নতি হবে যদি আপনিও এই সত্যটি অন্তর্ভুক্ত করেন যে আমাদের নুগেট প্যাকেজ মাইক্রোসফ্ট ইনস্টল করতে হবে।
ফ্রাঙ্ক থমাস

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