HTTP URL http: // +: 8000 / HelloWCF / पंजीकृत नहीं कर सका। आपकी प्रक्रिया में इस नाम स्थान तक पहुँच अधिकार नहीं है


179

मैं डब्ल्यूसीएफ में शुरुआत कर रहा हूं, लेकिन अपने अनुभव को बेहतर बनाने की कोशिश कर रहा हूं। और पहले कदम पर मुझे समस्या का सामना करना पड़ा। मैंने सबसे सरल WCF सेवा बनाई। कोड की लिस्टिंग: (एक फ़ाइल में सभी कोड)

using System;
using System.ServiceModel;

namespace EssentialWCF
{
    [ServiceContract]
    public interface IStockService
    {
        [OperationContract]
        double GetPrice(string ticker);
    }

    public class StockService : IStockService
    {
        public double GetPrice(string ticker)
        {
            return 94.85;
        }
    }

    class Service
    {
        static void Main(string[] args)
        {
            ServiceHost serviceHost = new ServiceHost(typeof(StockService),
                                                        new Uri("http://localhost:8000/HelloWCF"));

            serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
            serviceHost.Open();

            Console.WriteLine("To continue press ENTER");

            serviceHost.Close();
        }
    }
}

यही वह सेवा होगी जो मुझे सांत्वना के माध्यम से एक नंबर देती है। लेकिन डिबग ने मुझे अपवाद दिया: (संख्या के बजाय :))

HTTP URL http: // +: 8000 / HelloWCF / पंजीकृत नहीं कर सका । आपकी प्रक्रिया में इस नाम स्थान तक पहुँच अधिकार नहीं है ( विवरण के लिए http://go.microsoft.com/fwlink/?LinkId=70353 देखें)।

क्या आपने कभी भी ऐसी ही स्थिति का सामना किया है? मुझे हर सलाह देखकर खुशी होगी।


मैं उलझन में हूं। क्या वह HTML- बचा हुआ पाठ कोड का हिस्सा होना चाहिए?
एमी

1
अन्य विकल्प के लिए यहां देखें [ stackoverflow.com/questions/885744/…
shankbond

जवाबों:


231

दुर्भाग्य से अपवाद पाठ में लिंक, http://go.microsoft.com/fwlink/?LinkId=70353 , टूटा हुआ है। हालाँकि, यह http://msdn.microsoft.com/en-us/library/ms733768.aspx का नेतृत्व करता था जो बताता है कि अनुमतियाँ कैसे सेट करें।

यह मूल रूप से आपको निम्नलिखित कमांड का उपयोग करने के लिए सूचित करता है:

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

आप मदद की मदद से अधिक जानकारी प्राप्त कर सकते हैं netsh

उदाहरण के लिए: netsh http add ?

http addकमांड पर मदद देता है ।


3
यह विधि एक स्वचालित परीक्षण सर्वर पर आवश्यक अनुमतियों को स्थापित करने के लिए भी उपयोगी है।
टेक्नोलाबल

8
एक प्रशासक कमांड प्रॉम्प्ट से कमांड चलाना सुनिश्चित करें।
16

3
यदि आप एक डोमेन पर नहीं हैं, तो बस COMPUTER_NAME\USER_NAMEउपरोक्त कमांड में उपयोग करें ।
डॉटनेट

netsh http add urlacl url=http://+:80/ user=DOMAIN\userयदि आप पोर्ट पर किसी भी नामस्थान पर खाते का अधिकार देना चाहते हैं तो आप इसे चला सकते हैं ।
हामिद हेयर्डियन

क्या यह ग्राहक मशीन या सर्वर या दोनों पर होना चाहिए? और http: // में क्या इस्तेमाल किया जाना चाहिए? क्लाइंट या सर्वर का आईपी? हमेशा की तरह मदद बेकार है
GuidoG

177

मैंने विजुअल स्टूडियो आईडीई को बंद कर दिया और इसे विजुअल स्टूडियो आइकन पर राइट क्लिक करके और "रन ऐज़ एडमिनिस्ट्रेटर" कहकर फिर से खोल दिया, फिर जब मैंने होस्ट चलाया तो यह काम कर गया !!!


17
सबसे पहले, यह बुरा अभ्यास है, हालांकि विज़ुअल स्टूडियो यहां बहुत कम विकल्प छोड़ता है। दूसरा, समस्या अन्य चरणों (जैसे तैनात) पर बनी हुई है। ब्रायन का उत्तर देखें या ब्लॉगs.msdn.com/b/paulwh/archive/2007/05/04/…
Stéphane Gourichon

3
सुखद दुख! फ्रिगिन एमएस, अलग-अलग कार्यक्षमता बनाता है जो खुद से लड़ता है। 'कम से कम विशेषाधिकार' के लिए तो बहुत कुछ।
20

1
सबसे अच्छा अभ्यास या नहीं, यह एमएस पर है। यह WCF / .NET इतना खास क्यों है कि इसके माध्यम से कूदने के लिए एक और घेरा चाहिए? अगर मैं विंडोज पर चलने वाले जावा में एक सेवा लिखता हूं, तो यह स्थानीय रूप से काम करता है। यदि मैं इसे सार्वजनिक करना चाहता हूं, तो मैं फ़ायरवॉल, स्विचर, राउटर आदि को समायोजित करता हूं
काई वांग

1
-1। यह सही बात नहीं है। आपको प्रतिबंधित उपयोगकर्ता को स्पष्ट अनुमति देनी चाहिए और उसका उपयोग करना चाहिए। @ नीचे ब्रायन का उत्तर बेहतर है।
डैनियल जेम्स ब्रायर्स

2
-1। समस्या होने पर हार्ड ड्राइव को सुधारना और यह कहना कि समस्या हल हो गई के समान है। जवाब है, जैसा कि बताया गया था, नेटश चलाने के लिए
स्टेन बैशतावेंको

19

दृश्य स्टूडियो पर राइट क्लिक करें> व्यवस्थापक के रूप में चलाएँ> अपनी परियोजना खोलें और सेवा चलाएँ। यह विशेषाधिकार से जुड़ा मुद्दा है।


मेरे लिए काम किया। धन्यवाद!
लॉसबियर

14

आपको अपने खाते में कुछ व्यवस्थापक विशेषाधिकार की आवश्यकता है यदि आपकी मशीन स्थानीय क्षेत्र नेटवर्क में है तो आप अपने उपयोगकर्ता के लिए कुछ व्यवस्थापक विशेषाधिकार लागू करते हैं अन्यथा आपको प्रशासक के रूप में विचार करना शुरू करना चाहिए ...


2
यह वही है जो मुझे अपनी WCF विंडोज़ सेवा के लिए करने की आवश्यकता थी। मैं एक निर्माण मशीन पर सेवा को चलाने के लिए एक नए डोमेन खाते का उपयोग कर रहा था। मेरी सेवा शुरू हो जाएगी और फिर उस अपवाद को फेंक देंगे। एक बार जब मैंने इसे प्रशासक का अधिकार दिया, तो इसने पूरी तरह से काम किया।
देलिक्स

इससे मेरे लिए हल हो गया। बस सेवा पर राइट-क्लिक करें, और टैब पर "स्थानीय सिस्टम खाता चुनें" पर लॉग ऑन करें
अलेक्जेंडर डर्क

11

आपको जो सरल काम करना है, वह है कि आप अपने विजुअल स्टूडियो वातावरण को बंद करें और 'रन ऐज़ एडमिनिस्ट्रेटर' का उपयोग करके इसे फिर से खोलें। इसे अब सफलतापूर्वक चलना चाहिए।


18
एडमिन के रूप में रनिंग केवल समस्याओं से बचाती है, यह उन्हें हल नहीं करता है।
6

6

Windows Vista और बाद में HTTP WCF सेवा सामग्री आपके द्वारा उल्लिखित अपवाद का कारण बनेगी क्योंकि एक प्रतिबंधित खाता उसके लिए सही नहीं है। यही कारण है कि जब आप इसे व्यवस्थापक के रूप में चलाते हैं तो यह काम करता है।

प्रत्येक समझदार डेवलपर को एक प्रशासक के बजाय RESTRICTED खाते का उपयोग करना चाहिए, फिर भी बहुत से लोग गलत तरीके से जाते हैं और ठीक यही कारण है कि वहाँ बहुत सारे अनुप्रयोग हैं जो DEMAND व्यवस्थापक को अनुमति देते हैं जब वे वास्तव में आवश्यक नहीं होते हैं। आलसी तरीके से काम करने से आलस का समाधान होता है। मुझे उम्मीद है कि आप अभी भी एक प्रतिबंधित खाते (मेरी बधाई) में काम करेंगे।

अगर मुझे सही ढंग से याद है कि आप इन सेवा URL पर प्रतिबंधित उपयोगकर्ता अनुमतियाँ प्रदान करने वाले हैं जो WCF के लिए परिभाषित हैं, तो वहाँ एक टूल है (2008 या इसके बाद से) NamespaceManagerTool कहा जाता है। हालांकि मैंने इसका उपयोग नहीं किया है ...


जिस टूल के बारे में आप सोच रहे हैं उसे Http Namespace Manager कहा जाता है। यह MS द्वारा असमर्थित है लेकिन यह यहाँ उपलब्ध है: blogs.msdn.com/b/paulwh/archive/2007/05/04/…
Gareth

1

आपका नमूना कोड दिखाए जाने के अनुसार काम नहीं करेगा क्योंकि आप लाइन Console.ReadLine()से पहले शामिल करना भूल गए थे serviceHost.Close()। इसका मतलब है कि मेजबान खोला गया है और फिर तुरंत बंद हो गया है।

इसके अलावा, ऐसा लगता है कि आपको अपनी मशीन पर अनुमति की समस्या है। सुनिश्चित करें कि आप अपनी मशीन पर एक व्यवस्थापक खाते के रूप में लॉग-इन कर रहे हैं। यदि आप एक व्यवस्थापक हैं तो यह हो सकता है कि आपके पास HTTP अनुरोधों को संभालने के लिए वर्ल्ड वाइड वेब पब्लिशिंग सर्विस (W3SVC) न हो।


मैंने पहले ही इस समस्या को ठीक कर लिया है और यह मेरे cmd खाते के कारण नहीं है (और निश्चित रूप से) ReadLine () के कारण नहीं है - क्योंकि बिंदु अपवाद में है (cmd परिणाम नहीं)।
वाल्कोडर 15

मैंने हल किया कि stackoverflow.com/questions/885744/… के साथ ।
Valecoder

1

जब मैं अन्य उपयोगकर्ताओं के समाधान के बाद एक कंप्यूटर में इस समस्या को हल करने में सक्षम था, तो कमांड netshने मेरी एक मशीन में समस्या को हल नहीं किया और भले ही वर्तमान उपयोगकर्ता के पास प्रशासक के अधिकार थे, फिर भी मुझे "HTTP URL रजिस्टर नहीं कर सका। .... आपकी प्रक्रिया में इस नाम स्थान तक पहुँच अधिकार नहीं है "। इसलिए मैं अपने समाधान को साझा कर रहा हूं यदि आप अभी भी इसे अन्य समाधानों के साथ भी काम नहीं करते हैं।

मेरी वेबसाइट की भौतिक निर्देशिका में उपयोगकर्ता को लिखित अनुमति देने की कोशिश करने और कोई सफलता नहीं मिलने के बाद, मैंने आखिरकार सेस सेटिंग्स बदलने की कोशिश करने का फैसला किया

नीचे दी गई छवियों के अनुसार, मैंने एक विशिष्ट उपयोगकर्ता के रूप में कनेक्ट करने के लिए अपनी वेबसाइट के भौतिक पथ क्रेडेंशियल्स को कॉन्फ़िगर किया , जो DOMAIN \ username और पासवर्ड के साथ एक व्यवस्थापक खाता था, और यह त्रुटि को गायब करने के लिए पर्याप्त था।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


-1

क्लोज आईस एक्सप्रेस और सभी ब्राउजर (यदि यूआरएल किसी भी ब्राउजर में खोला गया था)। साथ ही विजुअल स्टूडियो आईडीई को एडमिन मोड में खोलें। इससे मेरी समस्या हल हो गई है।


इसने मुद्दे को हल नहीं किया। व्यवस्थापक मोड में एक आईडीई का उपयोग करना एक और मुद्दा है और शायद अधिक गंभीर है।
प्रीज़ा 8
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.