পরিষেবা রেফারেন্স ত্রুটি: পরিষেবা রেফারেন্সের জন্য কোড উত্পন্ন করতে ব্যর্থ


131

আমার একটি উইন্ডোজ সার্ভিস সলিউশন রয়েছে এবং ভিএস 2010 এ হার্মিসের (ওপেনসোর্স ইবিএমএস মেসেজ সার্ভার) ওয়েব সার্ভিসে একটি পরিষেবা রেফারেন্স যুক্ত করার চেষ্টা করছি।

আমি এটির URL টি ব্যবহার করে ওয়েব পরিষেবাটি দেখতে পাব, কিন্তু আমি যখন পরিষেবাটির রেফারেন্সটি চেষ্টা করি এবং জনপ্রিয় করি তখন ভিজ্যুয়াল স্টুডিওতে নিম্নলিখিত ত্রুটিগুলি পাই:

Error 8 Custom tool error: Failed to generate code for the service reference 'testService'.  Please check other error and warning messages for details. C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler


Warning 6 Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 7 Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:service[@name='EbmsMessageStatusQuery']/wsdl:port[@name='EbmsStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 5 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Schema with target namespace 'http://service.ebms.edi.cecid.hku.hk/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

কিছু তদন্তে মনে হয়েছিল যে এটি svcutil.exe কোনও ডিরেক্টরিতে অনুমতি না পাওয়ার কারণে প্রক্সিগুলি তৈরি করতে সক্ষম হয়নি (সম্ভবত সি: \ উইন্ডোজ \ টেম্প) suggest আমি বিভিন্ন অ্যাক্সেস অনুমতি বরাদ্দের চেষ্টা করেছি, তবে কোন ব্যবহারকারীের অনুমতি প্রয়োজন তা আমি সত্যই নিশ্চিত নই, বা এটি কেবল একটি রেড হেরিং।

কোন ধারনা ব্যাপকভাবে প্রশংসা হবে।

ধন্যবাদ

উত্তর:


303

কনফিগার পরিষেবা রেফারেন্স বিকল্প থেকে সমস্ত রেফারেন্সড অ্যাসেমব্লিতে পুনরায় ব্যবহারের ধরণগুলি নির্বাচন করতে হবে

বিশদ জন্য এই পরীক্ষা করুন


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

আমি "পুনরায় ব্যবহারের ধরণগুলি" অনিচ্ছুক না করে একটি সমাধান চেয়েছিলাম এবং আমি এখানে কাজ করে এমন একটি সন্ধান করতে পেরেছি, আমার উত্তরটি এখানে দেখুন
শাহিন

এই জাতীয় কিছু করার পরিবর্তে, ডাব্লুসিএফ ক্লায়েন্টটি অন্ধভাবে রেফারেন্সযুক্ত সমস্তগুলি ব্যবহার করার পরিবর্তে নির্ভর করে যেগুলি অ্যাসেমব্লিগুলি ব্যবহার করে এটি ব্যবহার করুন, প্রশ্নে চেকবক্সটি নির্বাচন না করা ছাড়াই এটি কৌশলপূর্ণ এবং আরও বেশি সময়সীমা সম্পন্ন হতে পারে তবে আমি এই সমাধানটির চেয়ে আরও উপযুক্ত খুঁজে পাই উত্তর হিসাবে চিহ্নিত
অস্কার গিলামন

আপনার প্রকল্পটি কেবল পঠনযোগ্য নয় তা নিশ্চিত করুন..এই আমার সমস্যা ছিল ..
অরিহন্ত জেইন

126

আপনার পরিষেবা রেফারেন্সে ডান ক্লিক করুন এবং চয়ন করুন Configure Service Reference...

পরিষেবা রেফারেন্স কনফিগার করুন

তারপরে আনচেক করুন Reuse types in referenced assemblies

প্রকার পুনরায় ব্যবহার করুন

ক্লিক করুন OK, পরিষ্কার করুন এবং আপনার সমাধান পুনর্নির্মাণ।


2
আমার যদি রেফারেন্সড অ্যাসেম্বলিগুলি পুনরায় ব্যবহার করতে হবে তবে কী হবে? আমার একটি প্রকল্প আছে এবং সেই চেকবক্সটি চেক করা আছে। আপডেটটি আমার মেশিনে কাজ করে, কিন্তু কোনও সহকর্মীর মেশিনে এটি হয় না ... কোনও ক্লু নেই?
রিকার্ডো আপেলটন

আমি যখন আমার প্রকল্পের সাথে v4.6.1 থেকে v4.7 এ আপগ্রেড করেছি তখন এটি ঘটেছিল। এটি এটি স্থির করে।
মাইক ফ্লিন 16

17

এএসপি। নেট এমভিসি 4.0 প্রকল্প ভিজ্যুয়াল স্টুডিও 2012 ব্যবহার করে একটি ওয়েব পরিষেবাদির জন্য ক্লায়েন্ট তৈরি করার চেষ্টা করার সময় আমিও একই ধরণের ত্রুটির মুখোমুখি হয়েছি।

সমস্যার মূলে মনে হয় যে প্রকল্পটি যেখান থেকে আমি ক্লায়েন্ট তৈরির চেষ্টা করছিলাম সেটি এমন একটি অ্যাসেম্বলির উল্লেখ করছিল যা ঘুরে দেখা যায় যে অন্য একটি সমাবেশের উপর নির্ভর করে যা রেফারেন্সও দেওয়া হয়নি।

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

পরিষেবা কনফিগারেশনগুলি থেকে "রেফারেন্সড অ্যাসেমব্লিসিতে পুনরায় ব্যবহারের ধরণগুলি" নির্বাচন করা উপরের সমস্যাটি সমাধান করবে , তবে এর একটি পার্শ্ব প্রতিক্রিয়া রয়েছে। পুনঃব্যবহারের ধরণের বিকল্পটি একটি কারণে রয়েছে এবং কিছু ক্ষেত্রে এটি পরিষেবা গ্রহণকারী কোডে অপ্রয়োজনীয় ingালাই এড়িয়ে চলে।

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

আমি পুনরায় ব্যবহারের ধরনগুলি অক্ষম করতে পছন্দ করে এমন একটি বিকল্প হ'ল বিশেষত সেই উদ্দেশ্যে নির্মিত ক্লাস লাইব্রেরি প্রকল্পের পরিষেবা রেফারেন্স যুক্ত করা। একটি জিনিস মনে রাখবেন তা হল ক্লাস লাইব্রেরির অ্যাপ.config থেকে পরিষেবা সম্পর্কিত সমস্ত কনফিগারেশনগুলি স্টার্টআপ প্রকল্পের কনফিগারেশন ফাইলটিতে অনুলিপি করা।

স্থানীয় অ্যাসেমব্লিতে যদি সংজ্ঞায়িত প্রকারগুলি থাকে যেগুলি পরিষেবা ক্লায়েন্টে পুনরায় ব্যবহার করা প্রয়োজন, সেই সমস্ত সমাবেশগুলি কেবলমাত্র তাদের সমস্ত নির্ভরতা সহ উপরের বর্ণিত গ্রন্থাগার প্রকল্প থেকে রেফারেন্স করা দরকার।


রহস্যময়। আমি আমার বাইন্ডিংটি এইচটিপিবাইন্ডিং থেকে নেটনমেডপাইপবাইন্ডিংয়ে পরিবর্তন করেছি (এটি একটি ম্যাক্স শেষ পয়েন্টও যুক্ত করেছে) এবং এটি আমার ক্লায়েন্ট অ্যাসেমব্লিতে এটিকে প্রশংসিত করেছি I আমি একটি নতুন ক্লাস লাইবারি বি তৈরি করেছি যা আমার ডাব্লুসিএফ পরিষেবাটি রেফারেন্স করেছে। তারপরে আমি এ এর ​​সাথে একটি রেফারেন্স হিসাবে বি যুক্ত করেছি এবং যাদুতে সমস্ত কিছু আবার কাজ করে। খুব অদ্ভুত. সমাধানের জন্য ধন্যবাদ
সিট্রোনাস

3

http://uliasz.com/2011/06/wcf-custom-tool-error-failed-to-generate-code-for-the-service-reference/#comment-1647

উপরের নিবন্ধটি ধন্যবাদ।

আমার ক্ষেত্রে, আমার ভিএসএফ নেট ২০০৮-এ আমার ডাব্লুপিএফ প্রকল্পের সাথে এই সমস্যাটি রয়েছে this এই নিবন্ধটি দেখার পরে, আমি বুঝতে পেরেছিলাম যে ওয়েব সার্ভিসে ব্যবহৃত অ্যাসেম্বলিটি ক্লায়েন্টের জন্য ব্যবহৃত সমাবেশের বিভিন্ন সংস্করণ।

ক্লায়েন্টে অ্যাসেম্বলি আপডেট করার পরে এটি ঠিক কাজ করে।


1

ডাব্লুএসডিএলে একটি ত্রুটির কারণে এবং ডাব্লুএসডিএল পরীক্ষা না করেই সমস্যাটি অনুমান করা অত্যন্ত কঠিন হবে কারণ আমি এর চেয়ে বেশি মন্তব্য করতে পারি না। সুতরাং আপনি যদি আপনার ডাব্লুএসডিএল ভাগ করতে পারেন তবে দয়া করে এটি করুন।

আমি কেবল এটুকুই বলতে পারি যে ডাব্লুএসডিএলে একটি লক্ষ্য অনুপস্থিত রয়েছে (লক্ষ্যবস্তু 'http://service.ebms.edi.cecid.hku.hk/' সহ) missing আমি ইস্যুগুলি এবং স্কিমার বিভিন্ন পরিচালনার বিষয়ে জানি যখন অন্তর্ভুক্ত নির্দেশাবলী উপেক্ষা করা হয়।

সাধারণত আমি মাইক্রোসফ্টের ওয়েব পরিষেবাদি বাস্তবায়ন খুব ভাল পেয়েছি তাই আমি মনে করি যে ওয়েব পরিষেবাটি ডজি ডাব্লুএসডিএল ফিরিয়ে দিচ্ছে।


ধন্যবাদ আলিওস্টাড, আমি কাজ থেকে নামার সময় ডাব্লুএসডিএলটি চেষ্টা করে শেয়ার করব।
jheppinstall

0

আমি সিলভারলাইট 5 (VS2012) এ একই ত্রুটি পেয়েছি

আপনি উল্লেখগুলি সরাতে পারেন:

  • System.ServiceModel.DomainServices.Client
  • System.ServiceModel.DomainServices.Client.Web

আপনি পরিষেবা উল্লেখগুলি আপডেট করার পরে সেগুলি আবার যুক্ত করতে ভুলবেন না।


0

উপরে উল্লিখিত হিসাবে, বিভিন্ন বিভিন্ন সমস্যার সম্ভাবনা রয়েছে। আমরা যা পেয়েছি তা হ'ল ডাব্লুসিএফ লাইব্রেরির জন্য .DLL ক্লায়েন্ট প্রকল্পের রেফারেন্স হিসাবে যুক্ত করা হয়েছিল। ফলস্বরূপ, এটি বস্তুগুলি সমাধান করার ক্ষেত্রে সমস্যা তৈরি করেছিল এবং এইভাবে কোড উত্পন্ন পদক্ষেপগুলি দ্বারা ফাইলগুলি "খালি করা" হয়ে যায়। "পুনরায় ব্যবহারের ধরণগুলি ..." ব্যবহারটি আনচেক করার সময় একটি উত্তরের মতো মনে হতে পারে, এটি নতুন নামের জায়গাতে অবজেক্টের ধরণের অতিরিক্ত সংজ্ঞা তৈরি করে, যা প্রকৃত প্রকারের প্রক্সি হয়, যা পরে সমস্ত ধরণের "সামঞ্জস্য" সমস্যাগুলির সাথে যুক্ত করে এই ধরণের ব্যবহার। আপনি যদি সত্যিই কোনও প্রকার "আড়াল" করতে চান তবে এই বিকল্পটি পরীক্ষা করা উচিত।

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


0

অ্যাডমিন মোডে ভিজ্যুয়াল স্টুডিও চালিয়ে সমাধান করা একই সমস্যার মুখোমুখি


0

VS2015 পেশাদারে কোনও VS2010 WCF + সিলভারলাইট সমাধান আপগ্রেড করার সময় আমি এই সমস্যার মুখোমুখি হয়েছি । স্বয়ংক্রিয়ভাবে সিলভারলাইট 4 থেকে সিলভারলাইট 5 এ আপগ্রেড করার পাশাপাশি, পরিষেবা রেফারেন্সের পুনরায় ব্যবহারের চেকবক্সের মান পরিবর্তন করা হয়েছিল এবং জেনারেশন ব্যর্থ হয়েছিল।


0

এই ত্রুটি দেখা দিলে "পুনরায় ব্যবহারের ধরণগুলি" সবসময় সমস্যা হয় না।

কোনও পুরানো পরিষেবাতে কোনও রেফারেন্স যুক্ত করার সময়, 'উন্নত' ক্লিক করুন এবং সেখানে 'ওয়েব রেফারেন্স যুক্ত করুন'। এখন আপনার ডাব্লুএসডিএল এর লিঙ্ক এবং সবকিছু কাজ করা উচিত।


0

আপনি যদি সমাবেশটি পুনরায় ব্যবহারের চেকবক্সটি নির্বাচন না করে এটিকে সংশোধন করতে চান তবে এটি আমার জন্য কাজ করেছে:

  • আপনি পুনরায় ব্যবহার করতে চান এমন উল্লেখযোগ্য সমাবেশ সরিয়ে ফেলুন
  • প্রকল্পের সমস্ত বিন ফোল্ডার মুছুন
  • পরিষেবা রেফারেন্স আপডেট করুন
    • "নির্দিষ্ট উল্লেখযোগ্য সমাবেশগুলিতে পুনরায় ব্যবহারের ধরণগুলি" রাখুন
  • ত্রুটিগুলি ঠিক করতে আবার সমাবেশে রেফারেন্স যুক্ত করুন
  • পুনরায় পরিষেবা রেফারেন্স আপডেট করুন

0

ভিজ্যুয়াল স্টুডিওটি পুনরায় চালু করা আমার পক্ষে কৌশলটি করেছে। আমি ভিএস 2015 ব্যবহার করছি।


-1

আমার পরিষেবা রেফারেন্স আপডেট করার চেষ্টা করার সময় আমার এই সমস্যা হয়েছিল (যদিও কোনও পরিষেবা রেফারেন্স যুক্ত করার সময় ত্রুটিটি কেবল প্রদর্শিত হবে) তবে সমাবেশ পুনরায় ব্যবহারের চেকবক্সটি সরাতে চাইনি।

আমার জন্য যা কাজ করেছে তা হ'ল:

  • আমি পুনরায় ব্যবহার করতে চাইলে উল্লেখযোগ্য সমাবেশ সরিয়ে ফেলুন
  • পরিষেবা রেফারেন্স আপডেট করুন
  • "নির্দিষ্ট উল্লেখযোগ্য সমাবেশগুলিতে পুনরায় ব্যবহারের ধরণগুলি" রাখুন
  • ত্রুটিগুলি উপেক্ষা করুন, কারণ এটি উল্লেখটি অনুপস্থিত!
  • ত্রুটিগুলি ঠিক করতে আবার সমাবেশে রেফারেন্স যুক্ত করুন
  • পুনরায় পরিষেবা রেফারেন্স আপডেট করুন

ভয়েলা, এখন এটি আপডেট হয় এবং আমার উত্পন্ন কোডটি আর সরিয়ে দেওয়ার চেষ্টা করে না।

পুনরায় ব্যবহারের ধরণের বৈশিষ্ট্যটি ছেড়ে দিতে আমি প্রায় প্রস্তুত ছিলাম ...

সম্পাদনা: এটিও নিশ্চিত করুন যে বিল্ড কনফিগারেশনটি কোনও এসিপিইউ বা x86, যেহেতু এসকিউটিয়েল x64 এর সাথে বগি।

অবনতিকারীদের কাছে: দুঃখিত যদি এটি আপনার পক্ষে কাজ করে না, তবে কেন এটি আমার পক্ষে কাজ করেছে তা আমি জানি না, তবে তা হয়ে গেছে। আমি সেই সময় অন্য কিছু করতে পেরেছি যা সমস্যার সমাধান করেছে, তবে এখনই জানার উপায় নেই।

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