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


182

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

আমি যখন আমাদের লাইভ সার্ভারে স্থাপন করি এবং অ্যাপ্লিকেশনটি চালিত করি তখন টাইপের একটি ব্যতিক্রম পাই System.ServiceModel.ServiceActivationExceptionযা উল্লেখ করে যে সংকলনের সময় ব্যতিক্রমের কারণে পরিষেবাটি সক্রিয় করা যায় না। ব্যতিক্রমটি হ'ল:

এই সংগ্রহে ইতিমধ্যে প্রকল্পের http সহ একটি ঠিকানা রয়েছে। এই সংগ্রহে প্রতি স্কিমে সর্বাধিক এক ঠিকানা থাকতে পারে।

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

উত্তর:


166

নেট 4 এ, আপনি multipleSiteBindingsEnabledবিকল্পটি ব্যবহার করতে পারেন :

<system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
    </serviceHostingEnvironment>
</system.serviceModel>

তারপরে, আপনাকে প্রতিটি ঠিকানা নির্দিষ্ট করতে হবে না।

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehostingenvironment.multiplesitebindingsenabled.aspx


হ্যাঁ, তবে এটি কেবল নেট নেট এবং আরও উচ্চতর 4.0 এর সাথে কাজ করে। .NET 2.0 / 3.0 / 3.5 সাইটগুলির সাথে এটি ব্যবহার করতে সক্ষম নয়।
বাইটমাস্টার

2
দ্রষ্টব্য - এখানে একটি টাইপো রয়েছে - কোনও বন্ধ নেই>, তাই যদি আপনি অনুলিপি করে পেস্ট করেন তবে আপনার সমস্যা হবে
সিডনিওস

2
এটি এই প্রশ্নের জন্য কাজ করবে না: "এই কার্যকারিতাটি কেবল এইচটিটিপি প্রোটোকল ব্যবহার করে উপলভ্য" "
জর্জ টিসিয়োকস

146

সারসংক্ষেপ,

কোড সমাধান: এখানে

কনফিগারেশন সমাধান: এখানে

সাহায্যে মাইক Chaliy , আমি কেমন কোড মাধ্যমে এই কাজ করতে কিছু সমাধান পাওয়া যায় নি। কারণ এই ইস্যুটি পুরোপুরি সমস্ত প্রকল্পগুলিকে প্রভাবিত করবে যা আমরা একটি পরিপূর্ণরূপে কনফিগারেশন সমাধানের জন্য রেখেছিলাম এমন একটি লাইভ পরিবেশে স্থাপন করি। অবশেষে আমি একটি খুঁজে পেয়েছি যা। নেট 3.0 এবং .NET 3.5 এ কীভাবে করবেন তা বিশদ করে।

সাইট থেকে নেওয়া, নীচে আপনার অ্যাপ্লিকেশন ওয়েব কনফিগারেশন কীভাবে পরিবর্তন করতে হয় তার একটি উদাহরণ:

<system.serviceModel>
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix="net.tcp://payroll.myorg.com:8000"/>
            <add prefix="http://shipping.myorg.com:9000"/>
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
</system.serviceModel>

উপরের উদাহরণে নেট.tcp: // payrol.myorg.com: 8000 এবং http://shipping.myorg.com:9000 হল তাদের নিজ নিজ প্রকল্পের জন্য একমাত্র বেস ঠিকানা, যা এর মধ্য দিয়ে যেতে দেওয়া হবে। বেসএড্রেসপ্রিজিক্স ফিল্টার কোনও ওয়াইল্ডকার্ড সমর্থন করে না।

আইআইএস দ্বারা সরবরাহ করা বেসএড্রেসগুলিতে অ্যাড্রেসপ্রিজিক্স ফিল্টার তালিকায় উপস্থিত না থাকা অন্যান্য স্কিমগুলির সাথে আবদ্ধ ঠিকানা থাকতে পারে। এই ঠিকানাগুলি ফিল্টার করা হবে না।

ডিএনএস সলিউশন (অনির্ধারিত): আমি মনে করি আপনি যদি আপনার ওয়েব অ্যাপ্লিকেশনের সাথে সম্পর্কিত একটি নতুন ডিএনএস এন্ট্রি তৈরি করেন, একটি নতুন ওয়েব সাইট যুক্ত করেছেন এবং এটি ডিএনএস এন্ট্রির সাথে মিলে একটি একক হোস্ট শিরোনাম দিয়ে থাকেন তবে আপনি এই সমস্যাটিকে পুরোপুরি প্রশমিত করবেন, এবং না আপনার ওয়েব কোডফাইগ ফাইলে কাস্টম কোড লিখতে বা উপসর্গ যুক্ত করতে হবে।


2
ওয়েব ঠিকানাটি উপস্থাপক ফিল্টার যোগ করার মাধ্যমে ওয়েলকনফিগ পুরোপুরি কাজ করেছিল। ধন্যবাদ জেরেমি!
মাইক 737

2
কেউ কেন এইরকম নিষেধাজ্ঞা চান, ডিফল্ট সেটিংসের চেয়ে কম কারণ আমি ভাবতে পারি না ...
pbz

42
আমি জাভাস্ক্রিপ্টের মাধ্যমে অ্যাক্সেস করা এএসপিএন এবং ওয়েব পরিষেবাদির সাথে ডাব্লুসিএফ সম্পর্কে খারাপ ধারণা শুরু করি। আমি প্লেইন পুরোনো ASMX পরিষেবার সঙ্গে অনেক কম সমস্যার ... ছিল
জুড়ী

ঠিক আছে যদি আপনার নীচে .net 4 এবং .net 2 অ্যাপ্লিকেশনগুলির মিশ্রণ যুক্ত কোনও সাইট থাকে। অ্যাপ্লিকেশনটির বেস .net4 এবং এর অধীনে বেশ কয়েকটি অ্যাপ্লিকেশন রয়েছে যার জন্য .net2 প্রয়োজন। আপনি কি .NET 2 অ্যাপ্লিকেশনে সমস্ত .net4 ফাইলে এবং পরিষেবা উপসর্গটিতে <পরিষেবাহোস্টিংএরুনিয়ারিয়াল মাল্টিপলসাইটসাইন্ডিং = "সত্য"> ব্যবহার করেন?
ট্র্যাভিস

59

আপনি কি এটি দেখেছেন - http://kb.discountasp.net/KB/a799/error-accessing-wcf-service-this-colલેક્-already.aspx

আপনি ওয়েব কোডফাইগ ফাইল পরিবর্তন করে এই ত্রুটিটি সমাধান করতে পারেন।

ASP.NET 4.0 এর সাথে আপনার ওয়েবকনফাইগে নিম্নলিখিত লাইনগুলি যুক্ত করুন:

<system.serviceModel> 
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

এএসপি.এনইটি ২.০ / 3.0.০ / 3.5.৩ এর সাথে আপনার ওয়েবকনফাইগে নিম্নলিখিত লাইনগুলি যুক্ত করুন:

<system.serviceModel> 
     <serviceHostingEnvironment> 
          <baseAddressPrefixFilters> 
               <add prefix="http://www.YourHostedDomainName.com"/> 
          </baseAddressPrefixFilters> 
     </serviceHostingEnvironment> 
</system.serviceModel> 

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

16

আমার ক্ষেত্রে এই ইস্যুটির মূল কারণটি হ'ল একাধিক এইচপি বাইন্ডিংগুলি প্যারেন্ট ওয়েবসাইটটিতে সংজ্ঞায়িত করা হয়েছিল ইনট এমজিআর-> সাইটস> মাইসাইট-> বৈশিষ্ট্য-> সম্পাদনা। আমি একটি HTTP বাঁধাই মুছলাম যা প্রয়োজনীয় ছিল না এবং সমস্যাটি সমাধান হয়ে গেছে।


1
হ্যাঁ আমর এটি খুব সহায়ক ছিল - আমার ক্ষেত্রে এটি অন্য ওয়েবসাইট ছিল যা এটি ভেঙে দেয় ings বাহ্যিকভাবে একই মেশিনে উপলব্ধ (তবে ভিন্ন হোস্ট-নেম সহ)। একইভাবে এটি একাধিকসাইটবাইন্ডিংস সক্ষম সেটিংস যোগ করে ঠিক করা যেতে পারে তবে তারপরে ওয়েবকনফিগটি অন্য সমস্ত পরিবেশের থেকে আলাদা হবে।
কোডার

2
এটি নীচে এটি লজ্জাজনক। আমাদের ক্ষেত্রে এটি আমাদের জন্য এটি স্থির করে।
brendonparker

এটি আমাকে বিকাশের পরিবেশের ত্রুটিটির প্রতিরূপ করতে সহায়তা করেছে। আমি কোনও শংসাপত্র বা লাইভ পরিবেশে ওয়েবসাইট বাইন্ডিংগুলি সম্পাদনা করতে পারি না। আমি একটি ডোমেন অনুকরণ করতে আমার হোস্ট ফাইলটি পরিবর্তন করেছি এবং স্থানীয় আইআইএস এবং বামের সাথে বাইন্ডিং যুক্ত করেছি!
এমফেদাত্তো

8

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

প্রতিস্থাপন করুন:

using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))

সঙ্গে:

using (ServiceHost host = new ServiceHost(typeof(HelloWorldService))

এবং ত্রুটি চলে গেছে।

জেনেরিক ধারণা: আপনি যদি পরম হিসাবে বেস ঠিকানা সরবরাহ করেন এবং এটি কনফিগারেশনে নির্দিষ্ট করেন তবে আপনি এই ত্রুটি পাবেন। সম্ভবত, ত্রুটি পাওয়ার একমাত্র উপায় এটি নয়।


আমার সমস্যার সমাধান।
কিশেনগায়ো

2

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

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


0

আমি পুরানো 2010 এক্সচেঞ্জ সার্ভারে একই ত্রুটি করে এসেছি। একটি পরিষেবা (এক্সচেঞ্জ মেলবক্সের প্রতিলিপি পরিষেবা) উপরের ত্রুটিটি দিচ্ছিল এবং মাইগ্রেশন প্রক্রিয়াটি চালিয়ে যাওয়া যায়নি। ইন্টারনেটের মাধ্যমে অনুসন্ধান করা, আমি এই লিঙ্কটি দিয়ে এসেছি যা নীচে বলেছিল:

প্রথমবার ইনস্টল করার সময় বা আইআইএস সার্ভারে কোনও পরিবর্তন আনা হলে এক্সচেঞ্জ জিআরই খুলতে ব্যর্থ। এটি স্ন্যাপ-ইন ত্রুটির সাথে ব্যর্থ হয় এবং যখন আপনি স্ন্যাপ-ইন পৃষ্ঠাটি খোলার চেষ্টা করেন, নীচের সামগ্রীটি প্রদর্শিত হয়:

This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. If your service is being hosted in IIS you can fix the problem by setting 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' to true or specifying 'system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters'."

কারণ : এই ত্রুটিটি ঘটে কারণ http পোর্ট নম্বর 443 ইতিমধ্যে অন্য অ্যাপ্লিকেশন দ্বারা ব্যবহৃত এবং আইআইএস সার্ভার একই পোর্টে একাধিক বাইন্ডিং পরিচালনা করতে কনফিগার করা হয়নি।

সমাধান : একাধিক পোর্ট বাইন্ডিং পরিচালনা করতে আইআইএস সার্ভারটি কনফিগার করুন। এটি কনফিগার করতে বিক্রেতার (মাইক্রোসফ্ট) সাথে যোগাযোগ করুন।

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

সঠিক বাইন্ডিংগুলি ঠিক করা আমার ক্ষেত্রে সমস্যাটি সমাধান করেছে এবং আমাকে ওয়েব.কনফিগ কনফিগার করতে হয়নি।

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