কখনও কখনও ডাব্লুসিএফ পরিষেবা রেফারেন্স যুক্ত করা একটি খালি রেফারেন্স। উত্পন্ন করে


159

কখনও কখনও একটি ডাব্লুসিএফ পরিষেবা রেফারেন্স যুক্ত করা একটি খালি রেফারেন্স। উত্পন্ন করে এবং আমি প্রকল্পের কোথাও পরিষেবাটি উল্লেখ করতে পারি না।

কেউ কি এর মুখোমুখি হয়েছেন?

উত্তর:


377

সাধারণত আমি দেখতে পাচ্ছি যে এটি একটি কোড-জেন সমস্যা এবং বেশিরভাগ সময় এটি কারণ আমি একটি টাইপ নামের বিরোধ পেয়েছি যা এটি সমাধান করতে পারে না।

আপনি আপনার সেবা রেফারেন্সে ডান ক্লিক করুন এবং কনফিগার ক্লিক করেন আনচেক "রেফারেন্সড মজলিসে পুনঃব্যবহার ধরন" এটি সম্ভবত সমস্যাটির সমাধান করব।

আপনি যদি এই বৈশিষ্ট্যের কিছু দিক ব্যবহার করে থাকেন তবে আপনার নামগুলি পরিষ্কার হয়ে গেছে তা নিশ্চিত করার প্রয়োজন হতে পারে।


5
যখন আমার সাথে এটি ঘটেছিল আমি জানতে পেরেছিলাম যে আমারও সংগ্রহের প্রকারটি অবজেক্টমোডেল থেকে অবজার্ভযোগ্য সংগ্রহ থেকে জেনেরিক.লাইস্টে পরিবর্তন করা দরকার
ইয়াসি দহন

2
আমার সাথে ঘটেছিল কারণ আমি আংশিক শ্রেণিতে যোগ করেছি।
মাকোটোসান

2
তবে আপনি যদি কোনও নির্দিষ্ট সমাবেশ থেকে
প্রকারটি

26
এটি আমার মনকে ছাপিয়ে যায় যে আমি এই প্রশ্ন থেকে 6 বছর পরেও প্রতি সপ্তাহে গড়ে 50 পয়েন্ট পেয়েছি। এম এস এস, এই ঠিক করুন। কমপক্ষে বিকাশকারীদের কিছু ফিডব্যাক দিন যখন এটি ফাঁকা ফাইলের দিকে তাকানোর পরিবর্তে খারাপ হয়।
অ্যান্ডারসন আইমেস

1
9 বছর পরে এবং আপনি এখনও সাহায্য করছেন। ধন্যবাদ!
প্যারামিটার

38

যেমন গৃহীত উত্তরটি উল্লেখ করেছে, পুনরায় ব্যবহারের সময় কোনও প্রকারের রেফারেন্স ইস্যু সম্ভবত অপরাধী। আমি খুঁজে পেয়েছি যখন আপনি সহজেই সমস্যাটি নির্ধারণ করতে পারবেন না তখন svcutil.exe কমান্ড লাইনটি আপনাকে অন্তর্নিহিত সমস্যাটি প্রকাশ করতে সহায়তা করবে (জন স্যান্ডার্স হিসাবে উল্লেখ করেছেন)।

বর্ধন হিসাবে এখানে এসকিউটিল ব্যবহারের একটি দ্রুত উদাহরণ।

svcutil /t:code https://secure.myserver.com/services/MyService.svc /d:test /r:"C:\MyCode\MyAssembly\bin\debug\MyAssembly.dll"

কোথায়:

  • / টি: কোড প্রদত্ত ইউআরএল থেকে কোড উত্পন্ন করে
  • / d: আউটপুট জন্য ডিরেক্টরি নির্দিষ্ট করতে
  • / r: একটি রেফারেন্স অ্যাসেমব্লী নির্দিষ্ট করতে

এখানে পূর্ণ এসকিউটিল কমান্ড লাইনের রেফারেন্স: http://msdn.microsoft.com/en-us/library/aa347733.aspx

আপনি একবার এসকিউটিইল চালানোর পরে, আপনাকে ব্যতিক্রমটি আমদানি করে ফেলেছে তা দেখতে হবে। আপনি আপনার যে কোনও একটি সম্পর্কে এই ধরণের বার্তাটি পেতে পারেন: "রেফারেন্সড টাইপটি ব্যবহার করা যাবে না যেহেতু এটি আমদানীকৃত ডেটা কনট্র্যাক্টের সাথে মেলে না"।

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

অন্যান্য আরও জটিল পরিস্থিতি রয়েছে যা এই ধরণের ব্যতিক্রম এবং ফলস্বরূপ ফাঁকা রেফারেন্স। এখানে একটি উদাহরণ

যদি আপনি এই সমস্যাটি অনুভব করছেন এবং আপনি যদি আপনার ডেটা চুক্তিতে জেনেরিক প্রকারগুলি ব্যবহার করছেন না বা আপনি ইস্রাফারেন্স = সত্য ব্যবহার করছেন না, তবে আমি নিশ্চিত হয়েছি যে আপনার ভাগ করা প্রকারগুলি আপনার ক্লায়েন্ট এবং সার্ভারে ঠিক একই are অন্যথায়, আপনি সম্ভবত এই সমস্যাটি চালিয়ে যাবেন।


আমার ক্ষেত্রে, এটি আমার ডাব্লুসিএফ পরিষেবাটিকেও রেফারেন্স করে এমন একটি সমাবেশের রেফারেন্স করার পরে ঘটেছিল about সংবিধানের তালিকা থেকে ঠিকঠাক করে ভাগ ভাগ করে নেওয়ার জন্য সেই সমাবেশটি সরিয়ে ফেলা হচ্ছে।
xr280xr

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

12

এটি হওয়ার পরে, ত্রুটিযুক্ত কোনও বার্তা আছে কিনা তা দেখতে ত্রুটিগুলি উইন্ডো এবং আউটপুট উইন্ডোটি দেখুন। এটি যদি সহায়তা না করে তবে svcutil.exeম্যানুয়ালি চালানোর চেষ্টা করুন এবং দেখুন কোনও ত্রুটির বার্তা রয়েছে কিনা।


@ এসকিউটিল.এক্সি কিভাবে চালাবেন? আপনি কি আমাকে সাহায্য করতে পারেন ?
আরুল সিদ্ধন

@ আরুল: svcutil.exe সম্পর্কিত তথ্য পেতে গুগল ব্যবহার করুন।
জন স্যান্ডার্স

2
নিশ্চিত নয় যে মাইক্রোসফ্ট এই পোস্টটি পড়েছে তবে এমনকি একটি বার্তা বাক্স দেখায় যা ত্রুটিগুলি এবং সতর্কতাগুলির পরিবর্তে চুপচাপ এগুলি রাখার পরিবর্তে (আমার ক্ষেত্রে ছোট করা) ত্রুটি তালিকার উইন্ডোটি এটি তৈরি করেছে তাই আমার গুগলের দরকার নেই এই. বিকল্পভাবে আমার ধারণা, যখন নতুন সতর্কতা / ত্রুটি রয়েছে তখন লাল বা হলুদ রঙে ট্যাব শো করা কার্যকর হবে?
jrh

12

এই সঠিক সমস্যাটি নিয়ে আমি সারা দিন ধরে মাথা ঠেকিয়ে যাচ্ছি। আমি ঠিক এটা ঠিক করেছি। এখানে ...

সেবা ছিল SSL- র মাধ্যমে চালানোর জন্য (যেমন এটি এর https://mydomain.com/MyService.svc )

ডেভলপমেন্ট সার্ভারে ডাব্লুসিএফ পরিষেবাদিতে একটি পরিষেবা রেফারেন্স যুক্ত করা ঠিক কাজ করেছে।

লাইভ প্রোডাকশন সার্ভারে ডাব্লুসিএফ পরিষেবাটির ঠিক একই বিল্ড স্থাপন করা, ক্লায়েন্ট অ্যাপ্লিকেশনটিতে স্যুইচ করা এবং লাইভ সার্ভিসে নির্দেশিত পরিষেবা রেফারেন্সটি কনফিগার করাতে কোনও ত্রুটি প্রদর্শিত হয়নি তবে অ্যাপটি তৈরি করবে না: দেখা যাচ্ছে যে পরিষেবাটি রেফারেন্সটির References.cs ফাইলটি সম্পূর্ণ খালি ছিল! পরিষেবা রেফারেন্স আপডেট করা কোনও তাত্পর্যপূর্ণ হয়নি। সমাধান পরিষ্কার করা কোনও লাভ হয়নি। VS2010 পুনরায় আরম্ভ করা কোনও তাত্পর্যপূর্ণ হয়নি। একটি নতুন ফাঁকা সমাধান তৈরি করা, একটি কনসোল প্রকল্প শুরু করা এবং লাইভ সার্ভিসে কোনও পরিষেবা রেফারেন্স যুক্ত করা ঠিক একই সমস্যা প্রদর্শিত হয়েছে।

আমি মনে করি না এটি বিতর্কিত ধরণের বা কোনও কিছুর কারণে হয়েছে, তবে কী হ্যাক - "ডাব্লুসিএফ পরিষেবা রেফারেন্সটি" সমস্ত রেফারেন্সড অ্যাসেমব্লিতে পুনরায় ব্যবহার করুন "পরীক্ষা না করে পুনরায় কনফিগার করেছি। আনন্দ নেই; আমি চেক চিহ্নটি পিছনে রেখেছি।

পরবর্তী পদক্ষেপটি ছিল রেফারেন্স ইউআরএলে এসকিউটিল ব্যবহার করে দেখুন এটি সমস্যার উদ্রেক করতে সহায়তা করে কিনা। আদেশটি এখানে:

svcutil /t:code https://mydomain.com/MyService.svc /d:D:\test

এটি নিম্নলিখিত উত্পাদন করে:

Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 'https://mydomain.com/MyService.svc' using WS-Metadata Exchange or DISCO.
Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Schema with target namespace 'http://mynamespace.com//' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://mynamespace.com//']/wsdl:portType[@name='IMyService']


Error: 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://mynamespace.com//']/wsdl:portType[@name='IMyService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IMyService']


Error: 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://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IMyService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='MyService']/wsdl:port[@name='WSHttpBinding_IMyService']


Generating files...
Warning: No code was generated.
If you were trying to generate a client, this could be because the metadata documents did not contain any valid contracts or services
or because all contracts/services were discovered to exist in /reference assemblies. Verify that you passed all the metadata documents to the tool.

Warning: If you would like to generate data contracts from schemas make sure to use the /dataContractOnly option.

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

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

এবং সমস্যাটি রয়েছে: সাইটের জন্য "এসএসএল সেটিংস" এর অধীনে, "এসএসএল প্রয়োজন" পরীক্ষা করে দেখুন এবং "গ্রহণ" এর জন্য ক্লায়েন্ট শংসাপত্রগুলির রেডিও বোতামটি পরীক্ষা করুন। সমস্যা স্থির!


5

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

  1. সমস্যা সংক্রান্ত পরিষেবার রেফারেন্সটি সরান।
  2. প্রকল্পটি হাইলাইট করার জন্য সলিউশন এক্সপ্লোরারে প্রকল্পের নামটিতে ক্লিক করুন ।
  3. প্রকল্পের রেফারেন্সে ডান ক্লিক করুন।
  4. প্রসঙ্গ তালিকার শীর্ষের কাছাকাছি, ক্লিন আইটেমটি ক্লিক করুন।
  5. আপনি যেমন সাধারণভাবে চান তেমন আপনার পরিষেবা রেফারেন্স যুক্ত করুন।

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


3

পূর্ববর্তী সংস্করণ থেকে আপগ্রেড হওয়া সিলভারলাইট 5 নিয়ে আমার এই সমস্যা ছিল।

এমনকি পরিষেবাটি পুনরায় যুক্ত করা এখনও আমাকে একটি খালি রেফারেন্স

আমি একেবারে নতুন প্রকল্প তৈরি করে সার্ভিস রেফারেন্সটি তৈরি করে শেষ করেছি। আপনি এটিতে প্রায় আধা ঘণ্টার বেশি সময় ব্যয় করেছেন এটি চেষ্টা করার জন্য এটি something এমনকি যদি আপনি মূল প্রকল্পটি ঠিক করতে দৃ determined়প্রতিজ্ঞ হন তবে আপনি যা করতে চান তা দেখতে এটি চেষ্টা করতে পারেন এবং তারপরে সমস্যার সমাধানের চেষ্টা করার জন্য পিছনের দিকে কাজ করতে পারেন।

সমস্যাটি ঠিক কী তা আমি কখনই বুঝতে পারি নি - তবে সম্ভবত .csproj ফাইলে কিছু আপগ্রেড করা হয়নি বা কিছু সেটিংস ভুল হয়েছে।


1
ঠিক আছে এটি প্রমাণিত হয়েছে যে আমি একটি পুরানো সংস্করণ উল্লেখ করছি System.Xml.Linq- সুতরাং যদি আপনি সংস্করণগুলি স্যুইচ করেন তবে আপনার সমস্ত
ডিএলএলগুলির

1

এটি ঘটতে শুরু করার পরে আপনি যদি সম্প্রতি আপনার প্রকল্পে কোনও সংযোজন যুক্ত করেন, সমস্যাটি দুটি সংগ্রহের কারণে হতে পারে যা একই সংগ্রহডাটা কন্ট্র্যাক্ট বৈশিষ্ট্যযুক্ত:

[CollectionDataContract(Name="AItems", ItemName="A")]
public class CollectionA : List<A> { }

[CollectionDataContract(Name="AItems", ItemName="A")]  // Wrong
public class CollectionB : List<B> { }

আমি আমার প্রোজেক্টটি জুড়ে পরিষ্কার করে এবং প্রতিটি নাম এবং আইটেমনাম বৈশিষ্ট্যটি অনন্য ছিল তা নিশ্চিত করে ত্রুটিটি স্থির করেছি :

[CollectionDataContract(Name="AItems", ItemName="A")]
public class CollectionA : List<A> { }

[CollectionDataContract(Name="BItems", ItemName="B")]  // Corrected
public class CollectionB : List<B> { }

তারপরে আমি পরিষেবাটি উল্লেখ এবং সমস্ত কিছু আবার কাজ করে রিফ্রেশ করেছি।


1

আমার সমস্যাটি হ'ল আমি আমার ওয়েব পরিষেবা লিঙ্কের শেষে " ম্যাক্স " রেখেছি।

" Http://yeagertech.com/yeagerte/YeagerTechWcfService.YeagerTechWcfService.svc/mex " এর পরিবর্তে

" Http://yeagertech.com/yeagerte/YeagerTechWcfService.YeagerTechWcfService.svc " ব্যবহার করুন


এটি এত স্পষ্ট তবে গুরুত্বহীন হিসাবে উপেক্ষা করা বা বরখাস্ত করা এত সহজ।
কার্ল অনেগার

1

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

তারপরে আপনাকে কেবল অনুমান করতে হবে যে এই কোডটিতে কী সমস্যা আছে।

সরঞ্জামটিতে কিছু ত্রুটি প্রতিক্রিয়া অবশ্যই অবশ্যই সহায়তা করেছিল।

আমি একটি ওয়েব পরিষেবা চুক্তি লিখছি। আমার কোনও সদস্যহীন একটি স্থানধারক এনাম ছিল। ঠিক আছে. তবে আমি যদি এটি অন্য শ্রেণীর একটি সম্পত্তিতে ব্যবহার করি এবং ক্লায়েন্টের সাথে চুক্তি dll পুনরায় ব্যবহার করি, কোডজেন কোনও ত্রুটি বার্তা ছাড়াই বিস্ফোরিত হয়। Svcutil.exe চালানো কোনও উপকারে আসেনি, এটি সুনির্দিষ্টভাবে উল্লেখ না করে কোনও সিএস ফাইল আউটপুট করতে ব্যর্থ হয়েছিল।


অপারেশন সংক্রান্ত সমস্ত চুক্তি আমার পক্ষে কাজ করেছে Comment আমি অপরাধী হিসাবে ভুল পদ্ধতিগুলি দেখছিলাম। সমস্যা সমাধানের পিছনে বেসিক পদ্ধতির জন্য ধন্যবাদ।
fizch

1

নিম্নলিখিতটি এখানে তালিকাভুক্ত নয়, এবং এটি সমাধানটি আমি গ্রহণ করেছি (এসভিসিইটিসস ত্রুটি বার্তাটি দেখার ক্ষেত্রে কার্যকর ছিল However তবে, আমার যে ত্রুটিটি পেয়েছিল তা ছিল wrapper type message cannot be projected as a data contract type since it has multiple namespacesMeaning অর্থ, আমি এই নেতৃত্বটি অনুসরণ করেছি এবং এই পোস্টের wsdl.exeমাধ্যমে শিখেছি )।

আমার ক্ষেত্রে, কেবলমাত্র ডাব্লুএসডিএল [ আমার-এসএমএক্স-পরিষেবা-ঠিকানা ] চলমান একটি সমস্যা-মুক্ত .csফাইল তৈরি করেছে, যা আমি আমার প্রকল্পে অন্তর্ভুক্ত করেছি এবং পরিষেবাটি ব্যবহারের জন্য দৃষ্টান্ত দিয়েছি।


0

@ ডাব্লুড যেমন উল্লেখ করেছেন, মূল ব্যথাটি ডেটা কন্ট্রাক্টসরিয়ালে রয়েছে যা সঠিকভাবে পুনরায় ব্যবহার না করে। এখানে ইতিমধ্যে কিছু উত্তর রয়েছে তাই আমি এগুলির জন্য কিছু প্রো এবং কনস যুক্ত করে শুরু করব:

  • 'ইস্রাফারেন্স' পতাকাটি অনেক সমস্যার কারণ হয়ে দাঁড়ায়, তবে এটি সরিয়ে ফেলা সর্বদা উত্তর নয় (বিশেষত: পুনরাবৃত্তি হওয়া পরিস্থিতিতে)।
  • অন্তর্নিহিত সমস্যাটি হ'ল ডেটা চুক্তিটি কোনওভাবে টাইপ নামের মতো হয় না, যদিও তারা কখনও কখনও থাকে (হু? হ্যাঁ, আপনি ঠিক পড়েছেন!)। দৃশ্যত সিরিয়ালাইজারটি বেশ পিক এবং আসল সমস্যাটি পাওয়া খুব কঠিন।
  • 'কনফিগার পরিষেবা পরিষেবাদি' থেকে 'রেফারেন্স চেক' সরানো কাজ করে তবে আপনাকে একাধিক বাস্তবায়ন করে leaves তবে, আমি প্রায়শই ডিএলএল জুড়ে এসওএপি ইন্টারফেসগুলি পুনরায় ব্যবহার করি। এছাড়াও, আমি জানি বেশিরভাগ পরিপক্ক এসওএ-তে, একাধিক পরিষেবা ইন্টারফেস একই ইন্টারফেসের ক্লাসগুলি প্রয়োগ করে এবং প্রসারিত করে। 'রেফারেন্সযুক্ত প্রকারগুলি ব্যবহার করুন' চেকগুলি অপসারণ এমন পরিস্থিতিতে ফলাফল দেয় যেখানে আপনি কেবলমাত্র সহজেই আর জিনিসপত্র পাস করতে পারবেন না।

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

  1. একটি পৃথক ইন্টারফেস ডিএলএল তৈরি করুন। সেই ডিএলএলে সমস্ত ডেটা কন্ট্রাক্ট এবং সার্ভিস কনট্র্যাক্ট অন্তর্ভুক্ত করুন; আপনার ইন্টারফেসে সার্ভিস কনট্রাক্টস রাখুন।
  2. ইন্টারফেস থেকে সার্ভার প্রয়োগ বাস্তবায়ন।
  3. আপনার প্রিয় পদ্ধতিটি ব্যবহার করে ক্লায়েন্টটি তৈরি করতে একই ডিএলএল ব্যবহার করুন। উদাহরণস্বরূপ (আইএমআইইন্টারফেস হ'ল সার্ভিস কন্ট্রাক্ট ইন্টারফেস):

    var httpBinding = new BasicHttpBinding();
    var identity = new DnsEndpointIdentity("");
    var address = new EndpointAddress(url, identity, new AddressHeaderCollection());
    var channel = new ChannelFactory<IMyInterface>(httpBinding, address);
    return channel.CreateChannel();

অন্য কথায়: 'পরিষেবা রেফারেন্স যুক্ত করুন' কার্যকারিতাটি ব্যবহার করবেন না , তবে ডক্লুসিএফকে প্রক্সি জেনারেশনকে বাইপাস করে (সঠিক) পরিষেবা ধরণের ব্যবহার করতে বাধ্য করুন। সর্বোপরি, আপনার ইতিমধ্যে এই ক্লাসগুলি রয়েছে।

প্রো এর:

  1. আপনি svcutil.exe প্রক্রিয়াটি বাইপাস করেন, যার অর্থ আপনার কোনও ইসরাইফারেন্স সমস্যা নেই
  2. ডেটা কন্ট্রাক্টের ধরণ এবং নাম সংজ্ঞা অনুসারে সঠিক; সর্বোপরি, সার্ভার এবং ক্লায়েন্ট উভয়ই একই সংজ্ঞা ব্যবহার করে।
  3. আপনি যদি এপিআই প্রসারিত করেন বা অন্য ডিএলএল থেকে প্রকারগুলি ব্যবহার করেন, (1) এবং (2) এখনও ধরে রাখেন, তাই আপনি সেখানে কোনও সমস্যায় পড়বেন না।

কনস:

  1. এ-সিঙ্ক পদ্ধতিগুলি একটি ব্যথা, যেহেতু আপনি কোনও সিঙ্ক প্রক্সি তৈরি করেন না। ফলস্বরূপ, আমি সিলভারলাইট অ্যাপ্লিকেশনগুলিতে এটি করার পরামর্শ দেব না।

0

উভয় পক্ষের প্রকল্পের রেফারেন্সের সাথে কাজ করার সময় আমার কাছে ভাঙা পরিষেবাগুলির রেফারেন্সের বিষয়টি ছিল (পরিষেবা প্রকল্প এবং প্রকল্পটিতে পরিষেবাটির একটি উল্লেখ রয়েছে) having উদাহরণস্বরূপ রেফারেন্সড প্রকল্পের .dll কে যদি "Contoso.De વિકાસment.Common" বলা হয় তবে প্রকল্পগুলির নামটি কেবল "কমন" থেকে সংক্ষিপ্ত করা হয়, এছাড়াও এই প্রকল্পের প্রকল্পের উল্লেখগুলি কেবল "প্রচলিত" নামকরণ করা হয়েছে। পরিষেবাটি তবে ক্লাসগুলি সমাধান করার জন্য "Contoso.De વિકાસment.Common" এর একটি রেফারেন্স আশা করে (যদি এই পরিষেবাটি পরিষেবার রেফারেন্স বিকল্পগুলিতে সক্রিয় করা থাকে)।

তাই এক্সপ্লোরারের সাহায্যে আমি প্রকল্পটির ফোল্ডারটি খুললাম যা পরিষেবা এবং "প্রচলিত" প্রকল্পটি উল্লেখ করছে re সেখানে আমি নোটপ্যাড দিয়ে ভিএস প্রকল্প ফাইল (.csproj) সম্পাদনা করি। রেফারেন্সড প্রকল্পের নাম অনুসন্ধান করুন (যা এই উদাহরণে "Common.csproj") এবং আপনি দ্রুত প্রকল্পের রেফারেন্স উপস্থাপন করে কনফিগারেশন এন্ট্রি পাবেন।

আমি বদলে গেছি

<ProjectReference Include="..\Common\Common.csproj"> <Project>{C90AAD45-6857-4F83-BD1D-4772ED50D44C}</Project> <Name>Common</Name> </ProjectReference>

প্রতি

<ProjectReference Include="..\Common\Common.csproj"> <Project>{C90AAD45-6857-4F83-BD1D-4772ED50D44C}</Project> <Name>Contoso.Development.Common</Name> </ProjectReference>

গুরুত্বপূর্ণ বিষয়টি হ'ল রেফারেন্স যুক্ত প্রকল্পটির আউটপুট হিসাবে ডেলির নাম উল্লেখ করে নাম পরিবর্তন করা।

তারপরে আবার ভিএস-এ ফিরে যান সেখানে আপনাকে প্রকল্পটি পুনরায় লোড করতে বলা হবে যেহেতু এটি ভিএস এর বাইরে সংশোধন করা হয়েছে since পুনরায় লোড বোতামটি ক্লিক করুন।

কাজটি করার পরে পরিষেবা রেফারেন্সকে আপডেট করার পরে প্রত্যাশার মতোই কাজ হয়েছিল।

আশা করি এটিও অন্য কাউকে সহায়তা করে।

শ্রদ্ধা এমএইচ


0

উন্নয়নের সময় আমিও গতকাল একই ধরণের সমস্যার মুখোমুখি হয়েছিলাম। আমি জানতে পেরেছি যে চুক্তির 2 বিভিন্ন সংস্করণে আমি একই নামস্থান ব্যবহার করছিলাম।

সংস্করণ 4 এবং সংস্করণ 5 এর জন্য আমাদের কাছে চুক্তির 2 সংস্করণ রয়েছে। আমি সংস্করণ 4 থেকে সমস্ত চুক্তি অনুলিপি করেছি এবং সংস্করণ 4 থেকে সংস্করণ 5 এ সমস্ত নাম স্থানটির নামকরণ করেছি। এটি করার সময় আমি কোনও একটিতে v4 থেকে v5 নামটির স্থানটির নামকরণ করতে ভুলে গিয়েছিলাম। নাম স্থান বিরোধের কারণে, References.cs ফাইলটি খালি ছিল।

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


0

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

আমার ক্ষেত্রে অপরাধী ছিল ইশেরিয়ালাইজেবল। আমার কাছে ডেটা কন্ট্রাক্ট ক্লাস রয়েছে ডেটা মেম্বার সম্পত্তি সহ ব্যতিক্রম। আপনার কাছে এমন কোনও ডেটা মেম্বার টাইপ নেই যাতে ইরিশরিয়ালযোগ্য কীওয়ার্ড রয়েছে। এই ব্যাতিক্রমে ইশিরাইজযোগ্য রয়েছে যত তাড়াতাড়ি আমি এটিকে সরিয়ে দেওয়ার সাথে সাথে সমস্ত কিছুই কবজির মতো কাজ করে।


0

এই সমস্যাটির সাথে সমস্যা সমাধানের চেষ্টা করার সময় svcutil, আমি dblood এর উত্তরে উল্লিখিত ত্রুটি পেয়েছি ("রেফারেন্সড টাইপটি ব্যবহার করা যাবে না কারণ এটি আমদানীকৃত ডেটা কন্ট্রাক্টের সাথে মেলে না")।

আমার ক্ষেত্রে অন্তর্নিহিত কারণটি এমন একটি এনাম টাইপ বলে মনে হয়েছিল যার ডেটা কন্ট্রাক্ট বৈশিষ্ট্য ছিল তবে তার সদস্যরা এনামমেম্বার বৈশিষ্ট্যের সাথে চিহ্নিত ছিল না। সমস্যা শ্রেণিটি svcutilনির্দেশিত সেই এনাম টাইপের একটি সম্পত্তি ছিল।

ডাব্লুডের উত্তরের মন্তব্য হিসাবে এটি আরও উপযুক্ত হবে তবে এর পক্ষে যথেষ্ট প্রতিনিধি নয় ...


0

আমার ক্ষেত্রে আমার কাছে ভিবি ওয়েব ফর্ম প্রকল্পের সাথে একটি সমাধান ছিল যা একটি সি # ব্যবহারকারীকন্ট্রোল রেফারেন্স করেছে। ভিবি প্রকল্প এবং সিএস প্রকল্প উভয়েরই একই পরিষেবার একটি পরিষেবার রেফারেন্স ছিল। ভিবি প্রকল্পে পরিষেবা রেফারেন্সের অধীনে এবং সিএস (কাঠামো) প্রকল্পে সংযুক্ত পরিষেবাদি গোষ্ঠীভুক্তকরণের অধীনে রেফারেন্সটি উপস্থিত হয়েছিল।

ভিবি ওয়েব ফর্ম প্রকল্পে পরিষেবা রেফারেন্সটি (যেমন, রেফারেন্স.ভিবি ফাইলটি খালি না হওয়ার জন্য পান) আপডেট করার জন্য, আমাকে সিএস প্রকল্পটি সরিয়ে ফেলতে হবে, তারপরে ভিবি পরিষেবা রেফারেন্সটি আপডেট করতে হবে, তারপরে সিএস প্রকল্পটি আবার যুক্ত করতে হবে সমাধান.


0

এই পদক্ষেপগুলি অনুসরণ করুন:

  1. পরিষেবা রেফারেন্স সরান
  2. ভিজ্যুয়াল স্টুডিও বন্ধ করুন
  3. / বিন এবং / ওজ ফোল্ডারগুলি মুছুন।
  4. ওপেন ভিজ্যুয়াল স্টুডিও।
  5. পরিষেবা রেফারেন্স যুক্ত করুন।
  6. আপনাকে স্বাগতম :)

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

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