ডাব্লুসিএফ পরিষেবা, কীভাবে সময়সীমা বাড়ানো যায়?


94

একটি নির্বোধ প্রশ্নের মতো মনে হতে পারে তবে ডাব্লুসিএফ-এর সমস্ত কিছু এসএমএক্সের চেয়ে অনেক জটিল বলে মনে হচ্ছে, কীভাবে আমি একটি এসভিসি সার্ভিসের সময়সীমা বাড়াতে পারি?

আমার এখন পর্যন্ত যা আছে তা এখানে:

<bindings>
      <basicHttpBinding>
        <binding name="IncreasedTimeout" 
          openTimeout="12:00:00" 
          receiveTimeout="12:00:00" closeTimeout="12:00:00"
          sendTimeout="12:00:00">
        </binding>
      </basicHttpBinding>
</bindings>

এবং তারপরে আমার শেষ পয়েন্টটি এইভাবে ম্যাপ করা হবে:

<endpoint address="" 
  binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout"
             contract="ServiceLibrary.IDownloads">
             <identity>
                <dns value="localhost" />
             </identity>
          </endpoint>

আমি যে সঠিক ত্রুটি পাচ্ছি:

00: 00: 59.9990000 পরে উত্তরটির জন্য অপেক্ষা করার সময় অনুরোধ চ্যানেলটির সময়সীমা শেষ হয়েছে। অনুরোধে কলটিতে পাস করা সময়সীমা মান বাড়ান বা বাইন্ডিংয়ে প্রেরণকালীন মান বাড়ান। এই ক্রিয়াকলাপের জন্য সময় বরাদ্দ করা হতে পারে একটি দীর্ঘ সময়ের সমাপ্তির একটি অংশ হতে পারে।

ডাব্লুসিএফ টেস্ট ক্লায়েন্টে একটি কনফিগার আইকন রয়েছে যাতে আমার পরিষেবার রান টাইম কনফিগারেশন রয়েছে:

আপনি দেখতে পাচ্ছেন যে এটির জন্য এটির মতো মূল্যবোধগুলি ঠিক নয়? আমি কি ভুল করছি?

<bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IDownloads" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="">
                            <extendedProtectionPolicy policyEnforcement="Never" />
                        </transport>
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>

উত্তর:


179

আপনার বাঁধাইয়ের কনফিগারেশনে চারটি টাইমআউট মান রয়েছে যা আপনি টুইট করতে পারেন:

<bindings>
  <basicHttpBinding>
    <binding name="IncreasedTimeout"
             sendTimeout="00:25:00">
    </binding>
  </basicHttpBinding>

সর্বাধিক গুরুত্বপূর্ণ হ'ল এটি sendTimeoutযা ক্লায়েন্টটি আপনার ডাব্লুসিএফ পরিষেবা থেকে প্রতিক্রিয়ার জন্য কতক্ষণ অপেক্ষা করবে says আপনি hours:minutes:secondsআপনার সেটিংসে উল্লেখ করতে পারেন - আমার নমুনায়, আমি সময় শেষ করে 25 মিনিটের মধ্যে রেখেছি।

openTimeoutনাম থেকেই বোঝা হিসাবে সময় পরিমাণ আপনি যখন আপনি আপনার WCF সেবার সংযোগ খুলতে অপেক্ষা করতে সম্মত হন। একইভাবে, closeTimeoutআপনি যখন সংযোগটি বন্ধ করেন (ক্লায়েন্টের প্রক্সিটি নিষ্পত্তি করে) তখন ব্যতিক্রম ছোঁড়ার আগে অপেক্ষা করবেন এমন সময়।

receiveTimeoutজন্য একটি মিরর মত একটি বিট sendTimeout- যখন পাঠাতে সময়সীমার সময় পরিমাণ আপনি সার্ভার থেকে একটি প্রতিক্রিয়ার জন্য অপেক্ষা করবো হয়, receiveTimeoutসময় পরিমাণ আপনি ক্লায়েন্ট গ্রহণ এবং প্রতিক্রিয়াতে প্রক্রিয়া করতে দেব সার্ভার

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

ওপেনটাইমআউট, রিসিভটাইমআউট এবং ক্লোজটাইমআউটও রয়েছে। বাঁধাই উপর দুটিই MSDN ডক্স কি আপনি এই জন্য আরো অধিক তথ্য দেয়।

ডাব্লুসিএফের সমস্ত জটিলতার উপর গুরুতর দৃrip়তা পেতে, আমি আপনাকে দৃ strongly়ভাবে সুপারিশ করব যে আপনি মিশেল লেরোক্স বুস্তামন্তের " লার্নিং ডাব্লুসিএফ " বইটি কিনবেন :

ডাব্লুসিএফ http://ecx.images-amazon.com/images/I/51GNuqUJq%2BL._BO2,204,203,200_PIsitb-sticker-arrow-click, TopRight,35,-76_AA240_SH20_OU01_.jpg শিখছি

এবং আপনি তার 15-অংশ " ডাব্লুসিএফ টপ টু বটম " স্ক্রিনকাস্ট সিরিজ দেখার জন্য কিছুটা সময় ব্যয় করেছেন - অত্যন্ত প্রস্তাবিত!

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

প্রোগ্রামিং ডাব্লুসিএফ http://ecx.images-amazon.com/images/I/41odWcLoGAL._BO2,204,203,200_PIsitb-sticker-arrow- ক্লিক, টপ রাইট, 35,-76_AA240_SH20_OU01_.jpg


আমি ওয়েবকনফিগে <system.serviceModel> এ বাধ্যতামূলক বিভাগগুলি যুক্ত করার চেষ্টা করেছি, তবে এটি এখন একটি ত্রুটি ছুঁড়েছে .... আমি যে কোনও অতিরিক্ত পদক্ষেপগুলি এড়িয়ে গেছি ...
জেএল।

আমি আমার পরিষেবাতে শেষ পয়েন্টটি <শেষ পয়েন্ট ঠিকানা = "" বাইন্ডিং = "বর্ধিত সময়কাল" এও পরিবর্তন করেছি - এটি কি ভুল কাজ?
জেএল।

আমি মনে করি আমি এটি পেয়েছি - বাইন্ডিং = "বেসিক্যাল এইচটিপিবাইন্ডিং" বাইন্ডিং কনফিগারেশন = "বর্ধিত টাইমআউট"
জেএল।

হুবহু - বাঁধাই হ'ল প্রোটোকলের ধরণ যা আপনি ব্যবহার করেন - বেসিক্যাল এইচটিপি, ডাব্লুএসএইচটিপি, নেটটিসিপি। বাঁধাই কনফিগারেশন হ'ল
টাইমআউটস

মজাদার এমনকি এটি করার পরেও, এখনও একটি সময়সীমা ত্রুটি পেয়েছে, মার্ক আপনি দয়া করে যথাসম্ভব তথ্য দিতে পারবেন?
জেএল।

27

সবচেয়ে ভাল উপায় হ'ল আপনার কোডটিতে যে কোনও সেটিংস চান change

নীচের উদাহরণটি দেখুন:

using(WCFServiceClient client = new WCFServiceClient ())
{ 
    client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 1, 30);
}

কনফিগার আপডেট করার পরিবর্তে এটি আরও ভাল সমাধান যা আমি বিভিন্ন কল এবং পরিষেবাদির জন্য একটি পৃথক মান কনফিগার করতে পারি, অনেক ধন্যবাদ
সেলিম

26

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


4
ভাল, হ্যাঁ - সাধারণত, এটি ক্লায়েন্ট এবং সার্ভার উভয়ই সেট করতে হয়, এমনকি - যেমন সেশন এবং এর মতো জিনিসগুলিতে "অ্যাক্টিভিটি টাইমআউট" এর ক্ষেত্রে।
marc_s

8
জেএল: আপনি কি অসাধারণ কাজটি করতে পেরেছেন? আমার একই সমস্যা হচ্ছে
নিক কাহন

যদি আপনি 'ডাব্লুসিএফ টেস্ট ক্লায়েন্ট' ব্যবহার করেন তবে পরিষেবা ট্রিতে 'কনফিগারেশন ফাইল' এ ডান ক্লিক করুন, তারপরে 'এসভিসি কনফিগইডিটর দিয়ে সম্পাদনা করুন' ক্লিক করুন এবং বাইন্ডিংয়ের মধ্যে সময়সীমা পরিবর্তন করুন।
র্যাডারজ

4

সম্প্রতি একই ত্রুটি পেয়েছে তবে প্রতিটি ডাব্লুসিএফ ক্লায়েন্ট কল বন্ধ করে নিশ্চিত করে এটি ঠিক করতে সক্ষম হয়েছিল। যেমন

WCFServiceClient client = new WCFServiceClient ();
//More codes here
// Always close the client.
client.Close();

বা

using(WCFServiceClient client = new WCFServiceClient ())
{ 
    //More codes here 
}

10
'ব্যবহার' পদ্ধতির ব্যবহার করবেন না: omaralzabir.com/do-not-use-using-in-wcf-client
অ্যালেক্স মার্শাল

Omaralzabir.com/do-not-use-used-in-wcf-client এর মন্তব্যে , usingএকটি ফল্ট চ্যানেল অবজেক্টটি নিষ্পত্তি না করার সময় কীভাবে এখনও ব্যবহার করতে হবে তার উদাহরণ রয়েছে । usingব্লকের সাথে আরও সামঞ্জস্যপূর্ণ এমন একটি ব্লগার এখানে রয়েছে : erwyn.bloggingabout.net/2006/12/09/WCF-S सर्विस- প্রক্সি-হেল্পার
গ্রেগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.