ডাব্লুসিএফ - কীভাবে বার্তার আকারের কোটা বাড়ানো যায়


453

আমার একটি ডাব্লুসিএফ পরিষেবা রয়েছে যা ক্লায়েন্টকে ডাটাবেস থেকে 1000 রেকর্ড দেয় returns আমার একটি এএসপি.নেট ডাব্লুসিএফ ক্লায়েন্ট রয়েছে (আমি ডাব্লুসিএফ গ্রাস করতে এসপ নেট ওয়েব অ্যাপ্লিকেশন প্রকল্পে পরিষেবা রেফারেন্স যুক্ত করেছি)।

আমি ক্লায়েন্ট অ্যাপ্লিকেশন চালানোর সময় আমি নিম্নলিখিত বার্তাটি পাই:

আগত বার্তাগুলির জন্য সর্বোচ্চ বার্তার আকারের কোটা (65536) ছাড়িয়ে গেছে। কোটা বাড়াতে উপযুক্ত বাঁধাই উপাদানটিতে ম্যাক্সরেকটেডমেসেজসাইজ সম্পত্তি ব্যবহার করুন।

কোন সাহায্য? কীভাবে বার্তা আকারের কোটা বাড়ানো যায়?


আমারও একই সমস্যা ছিল তবে আমি কেবল একটি বন্ধুত্বপূর্ণ নেটওয়ার্ক ত্রুটি পেয়েছি 400 তবে সমাধানটি ছিল বার্তা আকারের জিনিসপত্র ..
মিঃ ডব্লিউ

2
আমি [লিঙ্ক] [১] [১]
রাম

এটি ডিফল্টরূপে এত কম সেট করা কেন? সিকিউরিটি?
কোপস

@ সুরক্ষার জন্য সত্যই কুপস। উদাহরণস্বরূপ বার্তাগুলিতে একটি কোটা সেট করে ডিডিওএস আক্রমণগুলি চালানো (কমপক্ষে কিছুটা) আরও শক্ত।
পিটার ভ্যান কেকেম

উত্তর:


606

আপনি বার্তার আকার কোটা বৃদ্ধি, ভালো কিছু চাইবেন App.config বা Web.config ফাইল:

<bindings>
    <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000" 
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
            <readerQuotas maxDepth="32" 
                 maxArrayLength="200000000"
                 maxStringContentLength="200000000"/>
        </binding>
    </basicHttpBinding>
</bindings>

এবং আপনার শেষ পয়েন্ট কনফিগারেশনের ক্ষেত্রে বাইন্ডিং নামটি ব্যবহার করুন যেমন

...
bindingConfiguration="basicHttp"
...

মানগুলির ন্যায়সঙ্গততা সহজ, তারা বেশিরভাগ বার্তাগুলির জন্য যথেষ্ট পরিমাণে বড় large আপনার প্রয়োজন অনুসারে আপনি এই নম্বরটি টিউন করতে পারেন। নিম্ন ডিফল্ট মানটি মূলত ডস ধরণের আক্রমণগুলি প্রতিরোধ করতে পারে। এটি 20000000 তৈরি করা বিতরণকৃত ডস আক্রমণকে কার্যকর করার অনুমতি দেবে, 64৪k এর ডিফল্ট আকারটি আজকাল বেশিরভাগ সার্ভারকে পরাভূত করতে খুব বড় সংখ্যক ক্লায়েন্টের প্রয়োজন হবে।


20
ধন্যবাদ..এই পরিবর্তনটি ক্লায়েন্ট অ্যাপ্লিকেশনের ওয়েবকনফাইগ ফাইলে করা দরকার।
বাগবার্গার

8
আপনার এটি সার্ভারেও পরিবর্তন করতে হবে - আপনি যদি ডাব্লুসিএফ পদ্ধতিতে প্যারামিটার হিসাবে একটি বড় ডেটাসেট প্রেরণ করতে চান এমন পরিস্থিতিতে in
নাট

9
বেশিরভাগ বার্তাগুলির জন্য এটি যথেষ্ট পরিমাণে large আপনার প্রয়োজন অনুসারে আপনি এই নম্বরটি টিউন করতে পারেন। এটি মূলত ডস ধরণের আক্রমণগুলি রোধ করার জন্য রয়েছে। এটি 20000000 তৈরি করা একটি বিতরণকৃত ডস আক্রমণ কার্যকর করার অনুমতি দেবে, k৪k এর ডিফল্ট আকারটি আজকাল বেশিরভাগ সার্ভারকে পরাভূত করতে খুব বড় সংখ্যক ক্লায়েন্টের প্রয়োজন হবে
নট

18
আগ্রহী অন্যদের জন্য, আমি অন্য ব্লগে পড়েছিলাম যে সর্বাধিক আকার 2147483647। 20000000 এই সংখ্যার তুলনায় কিছুটা ছোট, সুতরাং পরিষেবাটি ব্যাহত না করে আপনি যে ক্ষুদ্রতম সংখ্যাটি দিয়ে চলে যেতে পারেন তা বোঝা যায়।
গর্বজেকদাদ

5
@ স্লৌমা যদি আগত প্যারামিটারটি খুব বড় হয় তবে এটি সার্ভারে পরিবর্তন করা দরকার; অন্যথায় (এবং আরও সম্ভবত) ক্লায়েন্ট কনফিগারেশন ফাইলটিতে পরিবর্তন করা দরকার, কারণ এটি পরিষেবার প্রতিক্রিয়া (এর পরামিতি নয়) যা খুব বড়।
নট

155

আপনি যদি এখনও ডাব্লুসিএফ টেস্ট ক্লায়েন্ট ব্যবহার করার সময় এই ত্রুটি বার্তাটি পান তবে ক্লায়েন্টটির আলাদা ম্যাক্সুফারসাইজ সেটিংস রয়েছে।

সমস্যাটি সংশোধন করতে:

  1. গাছের নীচে কনফিগারেশন ফাইল নোডে ডান ক্লিক করুন
  2. এসভিসি কনফিগএডিটর দিয়ে সম্পাদনা নির্বাচন করুন

ম্যাকসুফারসাইজ সহ সম্পাদনাযোগ্য সেটিংসের একটি তালিকা উপস্থিত হবে।

দ্রষ্টব্য: স্বতঃ উত্পাদিত প্রক্সি ক্লায়েন্টরা ম্যাক্সবফারসাইজকে ডিফল্টরূপে 65536 এ সেট করে।


8
ওহ কেন আমি সবসময় এই সম্পর্কে ভুলে যাই? +1
জেমস স্কেম্প

9
বনাম ২০১৩-তে এসভিসি কনফিগএডিটর লোকেরা যদি এটির সন্ধান করে তবে সম্পাদনা ডাব্লুসিএফ কনফিগারেশন দিয়ে প্রতিস্থাপন করা হবে।
জুমভাইরাস

SVCconfigEditor সন্ধান করতে পারছেন না?
আরুল সিদ্ধন

আপনি এটি বাইন্ডিংস ফোল্ডারের নীচে পাবেন, পরিষেবার জন্য বাঁধার উপর ক্লিক করুন এবং এটি সেখানে রয়েছে।
সমীর আলিভাই

যদি আপনার কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয় তবে আপনার একেবারে এটি করা উচিত। আপনি যখনই আপনার রেফারেন্স আপডেট করবেন এটি app.config পুনরায় উত্সাহিত করবে এবং আপনাকে আবার এটি ম্যানুয়ালি পরিবর্তন করতে হবে। আপনি যদি এটি ভিএস পরিবর্তন করেন তবে নতুন পরিবর্তনগুলি আপনার চয়ন করা সেটিংসকে সামঞ্জস্য করবে।
কিংফ্রিটো_5005

104

আপনি যদি আপনার ডাব্লুসিএফ বাইন্ডিংগুলি গতিশীলভাবে তৈরি করে থাকেন তবে ব্যবহারের কোডটি এখানে রয়েছে:

BasicHttpBinding httpBinding = new BasicHttpBinding();
httpBinding.MaxReceivedMessageSize = Int32.MaxValue;
httpBinding.MaxBufferSize = Int32.MaxValue;
// Commented next statement since it is not required
// httpBinding.MaxBufferPoolSize = Int32.MaxValue;

আপনি এটি আরম্ভ করতে ব্যবহার করতে পারেন। স্পষ্টতই আপনি এটিকে আপনার নির্মাণকারী পদ্ধতিটি ব্যবহার করতে পারেন।
এ্যামেরে

45

WCF টেস্ট ক্লায়েন্ট এটা নিজস্ব ক্লায়েন্ট কনফিগ হয়েছে।

পরীক্ষা ক্লায়েন্ট চালান এবং নীচে স্ক্রোল। আপনি কনফিগারেশন ফাইল নোডে ডাবল ক্লিক করলে আপনি এক্সএমএল উপস্থাপনা দেখতে পাবেন। যেহেতু আপনি দেখতে পারেন maxReceivedMessageSizeহয় 65536

এটি সম্পাদনা করতে কনফিগারেশন ফাইল ট্রি নোডে ডান ক্লিক করুন এবং এর সাথে সম্পাদনা নির্বাচন করুন SvcConfigEditor। সম্পাদক যখন প্রসারিত বাইন্ডিংগুলি খুলবে এবং স্বয়ংক্রিয়ভাবে উত্পন্ন হওয়া বাঁধার ডাবল ক্লিক করুন।

আপনি এখানে সহ সমস্ত বৈশিষ্ট্য সম্পাদনা করতে পারেন maxReceivedMessageSize। আপনার কাজ শেষ হয়ে গেলে ফাইল - সেভ ক্লিক করুন

শেষ অবধি, আপনি যখন ডাব্লুসিএফ টেস্ট ক্লায়েন্ট উইন্ডোতে ফিরে আসবেন তখন সরঞ্জাম - বিকল্পগুলিতে ক্লিক করুন ।

দ্রষ্টব্য : পরিষেবাগুলি চালু করার সময় সর্বদা পুনরায় উত্সাহিত কনফিগারেশনটি আনচেক করুন


2
সম্ভবত এখানে সেরা উত্তর!
হারিস

3
Always regenerate configবিকল্পটি আনচেক করার জন্য নোটটির কারণে আপভোট করুন ।
ফুরিয়ার

আমার মতে সহজ সমাধান। আমার কিছু মাথা ব্যথা বাঁচিয়েছে
জ্যারেড বিচ

বনাম ২০১৩-তে এসভিসি কনফিগএডিটর লোকেরা যদি এটির সন্ধান করে তবে সম্পাদনা ডাব্লুসিএফ কনফিগারেশন দিয়ে প্রতিস্থাপন করা হবে।
জুমভাইরাস

ধন্যবাদ. কিছুক্ষণের জন্য আমার মাথা ভেঙে গেছে, সার্ভারের কনফিগারেশনটি বারবার পরিবর্তন করা হচ্ছে, যখন টেস্ট ক্লায়েন্ট কনফিগারেশনে সমস্যা ছিল!
ফাহাদ

24

আমি সহজ উপায় খুঁজে পেয়েছি

--- ওয়েবকনফিগ বা অ্যাপ্লিকেশন কনফিগারেশন ফাইলটিতে ডান ক্লিক করুন এবং সম্পাদনা ডাব্লুসিএফ কনফিগারেশন ক্লিক করুন এবং বিংডিজ পেয়েছে উত্তরগুলি ইয়োর পরিষেবা এবং ডান পাশের শো ম্যাক্সরিসিভমেসেজ সাইজ একটি বৃহত সংখ্যক দিন ---


2
এটি একটি দুর্দান্ত উত্তর ছিল, আমি জানতাম না যে আমি এখান থেকে সম্পাদনা করতে পারি, ধন্যবাদ
অ্যালবার্ট

8

আমি সমস্যাটি সমাধান করছি ... নীচে

    <bindings>
  <netTcpBinding>
    <binding name="ECMSBindingConfig" closeTimeout="00:10:00" openTimeout="00:10:00"
      sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
      maxReceivedMessageSize="2147483647" portSharingEnabled="true">
      <readerQuotas maxArrayLength="2147483647" maxNameTableCharCount="2147483647"
          maxStringContentLength="2147483647" maxDepth="2147483647"
          maxBytesPerRead="2147483647" />
      <security mode="None" />
    </binding>
  </netTcpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="ECMSServiceBehavior">
      <dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="2147483647" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceTimeouts transactionTimeout="00:10:00" />
      <serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="100"
        maxConcurrentInstances="100" />
    </behavior>
  </serviceBehaviors>
</behaviors>

20
এটি আমার সমাধান থেকে কীভাবে আলাদা? আপনি ব্যতীত আপনার কনফিগারেশনের সমস্ত অপ্রাসঙ্গিক অংশ পাশাপাশি প্রাসঙ্গিক অংশগুলি অন্তর্ভুক্ত করেছেন এবং আপনি যে 200 মিটার পছন্দ করেছেন তার পরিবর্তে আপনি সর্বোচ্চ সম্ভাব্য মানটি বেছে নিয়েছেন?
নাট

3
প্রসঙ্গটিও খুব ভাল ... সম্ভবত এই দুটি উত্তর একত্রিত হতে পারে?
জেফ

1
সেটিংটি কি সার্ভার বা ক্লায়েন্টে কনফিগার করা যায়?
জন কেনেডি

8

আমি ক্যালকুলেটরোট () ব্যবহার করে আমার প্রকল্পে বিং মানচিত্র ডাব্লুপিএফ-তে আমার সমস্যাটি সমাধান করেছি। আমার ক্ষেত্রে সমাধানটি "কাস্টমবাইন্ডিং" বিভাগের জন্য "এইচটিসিটি ট্রান্সপোর্ট" বৈশিষ্ট্যে ম্যাক্সরিসিটেডমেসেজসাইজ এবং ম্যাক্সরসিটেডমেসেজসাইজ সেট করছিল।

আমি এই কনফিগারেশনগুলিতে অ্যাপ্লিকেশনস.কনফিগ ফাইলটিতে (যেমন। MyApp.config) সেট করেছি:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IGeocodeService" />
            <binding name="BasicHttpBinding_IRouteService" />
        </basicHttpBinding>
        <customBinding>
            <binding name="CustomBinding_IGeocodeService">
                <binaryMessageEncoding />
              <httpTransport manualAddressing="false" maxBufferPoolSize="524288"
                                maxReceivedMessageSize="2147483647" allowCookies="false" authenticationScheme="Anonymous"
                                bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
                                keepAliveEnabled="true" maxBufferSize="2147483647" proxyAuthenticationScheme="Anonymous"
                                realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                                useDefaultWebProxy="true" />
            </binding>
            <binding name="CustomBinding_IRouteService">
                <binaryMessageEncoding />
              <httpTransport manualAddressing="false" maxBufferPoolSize="524288"
                                maxReceivedMessageSize="2147483647" allowCookies="false" authenticationScheme="Anonymous"
                                bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
                                keepAliveEnabled="true" maxBufferSize="2147483647" proxyAuthenticationScheme="Anonymous"
                                realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                                useDefaultWebProxy="true" />
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint address="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IGeocodeService"
            contract="BingServices.IGeocodeService" name="BasicHttpBinding_IGeocodeService" />
        <endpoint address="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc/binaryHttp"
            binding="customBinding" bindingConfiguration="CustomBinding_IGeocodeService"
            contract="BingServices.IGeocodeService" name="CustomBinding_IGeocodeService" />
        <endpoint address="http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRouteService"
            contract="BingServices.IRouteService" name="BasicHttpBinding_IRouteService" />
        <endpoint address="http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc/binaryHttp"
            binding="customBinding" bindingConfiguration="CustomBinding_IRouteService"
            contract="BingServices.IRouteService" name="CustomBinding_IRouteService" />
    </client>
</system.serviceModel>

6

<bindings>
  <wsHttpBinding>
    <binding name="wsHttpBinding_Username" maxReceivedMessageSize="20000000"          maxBufferPoolSize="20000000">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="UserName" establishSecurityContext="false"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

<client>
  <endpoint
            binding="wsHttpBinding"
            bindingConfiguration="wsHttpBinding_Username"
            contract="Exchange.Exweb.ExchangeServices.ExchangeServicesGenericProxy.ExchangeServicesType"
            name="ServicesFacadeEndpoint" />
</client>


আপনার উত্তর পোস্ট করার জন্য দুর্দান্ত। এটি গুরুত্বপূর্ণ যে "বাইন্ডিং কনফিগারেশন" মানটি বাইন্ডিং নামের সাথে মেলে। আপনার উদাহরণে "ডাব্লুএসটিএইচটিপিবাইন্ডিং_ ব্যবহারকারীর নাম"।
ব্রুনো বিয়েরি

6

জন্য HTTP- র:

<bindings>
  <basicHttpBinding>
    <binding name="basicHttp" allowCookies="true"
             maxReceivedMessageSize="20000000" 
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
        <readerQuotas maxDepth="200" 
             maxArrayLength="200000000"
             maxBytesPerRead="4096"
             maxStringContentLength="200000000"
             maxNameTableCharCount="16384"/>
    </binding>
  </basicHttpBinding>
</bindings>

জন্য বিভিন্ন TCP:

<bindings>
  <netTcpBinding>
    <binding name="tcpBinding"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="200"
           maxArrayLength="200000000"
           maxStringContentLength="200000000"
           maxBytesPerRead="4096"
           maxNameTableCharCount="16384"/>
    </binding>
  </netTcpBinding>
</bindings>

গুরুত্বপূর্ণ:

আপনি যদি অনেকগুলি সংযুক্ত বস্তু (যেমন: একটি ট্রি ডেটা স্ট্রাকচার, অনেকগুলি অবজেক্টসযুক্ত একটি তালিকা ...) সহ জটিল বস্তুটি পাস করার চেষ্টা করেন তবে আপনি কীভাবে কোটা বাড়িয়েছেন তা যোগাযোগ ব্যর্থ হবে will এই জাতীয় ক্ষেত্রে, আপনাকে অবশ্যই ধারণকৃত উপাদানগুলির সংখ্যা বাড়িয়ে তুলতে হবে:

<behaviors>
  <serviceBehaviors>
    <behavior name="NewBehavior">
      ...
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

এটা maxItemsInObjectGraphছিল আমার জন্য (দ্রুত) সমাধান। তবে এটি বাড়ানোর সময়, আপনার অ্যাপ্লিকেশনটির জন্য সংস্থাগুলিতে ডেটা অনুরোধ করার জন্য আরও ভাল সমাধান কিনা তা নিয়ে ভাবা উচিত, বিপুল অবজেক্ট গ্রাফের বিপরীতে যা সংস্থানসমূহকে স্ট্রেন করতে পারে।
পল

6

আমার জন্য, আমাকে যা করতে হয়েছিল তা হ'ল maxReceivedMessageSize="2147483647"ক্লায়েন্ট অ্যাপকনফাইগটিতে যুক্ত করা। সার্ভারটি ছোঁয়া হয়নি।


5

আমার অভিজ্ঞতা থেকে আরও একটি গুরুত্বপূর্ণ বিষয় বিবেচনা করা উচিত ..

আমি ম্যাক্সফারপুলসাইজ সর্বোচ্চ না বাড়ানোর জন্য দৃ strongly়ভাবে পরামর্শ দেব, কারণ পুল থেকে বাফারগুলি অ্যাপ-ডোমেন (অর্থাত্ অ্যাপ্লিকেশন পুল) পুনরুদ্ধার হওয়া অবধি কখনই প্রকাশিত হয় না।

উচ্চ ট্র্যাফিকের সময়কালের জন্য প্রচুর স্মৃতি ব্যবহৃত হতে পারে এবং কখনই মুক্তি পায় না।

আরও বিশদ এখানে:


3

ভুলে যাবেন না যে এক্সিকিউশন এন্ট্রি পয়েন্টের অ্যাপ.config বিবেচনা করা হবে, ক্লাস লাইব্রেরি প্রকল্পের ওয়েব-সার্ভিস কলগুলি পরিচালনা করে না যদি এটি থাকে।

উদাহরণস্বরূপ, ইউনিট পরীক্ষা চালানোর সময় আপনি যদি ত্রুটি পান তবে আপনাকে পরীক্ষার প্রকল্পে উপযুক্ত কনফিগারেশন সেট আপ করতে হবে।


0

ওয়েবকনফিগে এই সেটিংসটি ব্যবহার করার সময় আমি এই ত্রুটিটি পেয়েছি

System.ServiceModel.ServiceActivationException

আমি এটির মতো সেটিংস সেট করেছি:

      <service name="idst.Controllers.wcf.Service_Talks">
    <endpoint address="" behaviorConfiguration="idst.Controllers.wcf.Service_TalksAspNetAjaxBehavior"
      binding="webHttpBinding" contract="idst.Controllers.wcf.Service_Talks" />
  </service>
  <service name="idst.Controllers.wcf.Service_Project">
    <endpoint address="" behaviorConfiguration="idst.Controllers.wcf.Service_ProjectAspNetAjaxBehavior"
      binding="basicHttpBinding" bindingConfiguration="" bindingName="largBasicHttp"
      contract="idst.Controllers.wcf.Service_Project" />
  </service>
</services>

<bindings>
<basicHttpBinding>
    <binding name="largBasicHttp" allowCookies="true"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
        <readerQuotas maxDepth="32"
             maxArrayLength="200000000"
             maxStringContentLength="200000000"/>
    </binding>
</basicHttpBinding>


4
সুতরাং, আপনি নাটের উত্তরটি ব্যবহার করে আপনার সমস্যার সমাধান করেছেন এবং তারপরে এটি নিজের হিসাবে পোস্ট করেছেন। ভালো না.
আরকেইন

@ কারাইন নাটসের উত্তরটি খুব সাধারণ ছিল, স্টকের নাম এবং সংখ্যা ব্যবহার করে যা ঘন ঘন আসার আশা করা যায়। এই উত্তরটি চুরি করা হয়নি, এটি কেবল সঠিক উত্তর। যেহেতু শুধুমাত্র একটি সঠিক উত্তর আছে, এটি পুনরাবৃত্তি হতে বাধ্য ছিল।
কিংফ্রিটো_5005

@ কিংফ্রিটো_5005 উত্তরদাতা যখন পোস্ট করেছেন তখন "সঠিক" উত্তরটি ইতিমধ্যে এখানে ছিল। তিনি bindingsনাটির উপাদানটি খুব স্পষ্টভাবে তুলে ধরেছিলেন এবং তার উত্তরের অংশ হিসাবে এটি পুনরায় পোস্ট করেছিলেন। এই 2000000মানগুলি খুব স্বতন্ত্র।
আরকাইন

@ ক্যারেন, আমি এগুলি খুব মানক মানগুলির সাথে একমত নই, আমার সংস্থা এগুলি আমাদের বাধ্যতামূলক উপাদানগুলিতেও ব্যবহার করে।
কিংফ্রিটো_5005
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.