HTTP http: // +: 8000 / HelloWCF / URL'sini kaydedemedi. İşleminizin bu ad alanına erişim hakkı yok


179

WCF'de yeni başlayan biriyim, ancak deneyimimi geliştirmeye çalışıyorum. Ve ilk adımda sorunla karşılaştım. En basit WCF hizmetini oluşturdum. Kod listesi: (tek bir dosyadaki tüm kod)

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();
        }
    }
}

Konsol aracılığıyla bana bir numara veren hizmet bu olurdu. Ama hata ayıklama bana bir istisna veriyor: (sayı yerine :))

HTTP http: // +: 8000 / HelloWCF / URL'sini kaydedemedi . İşleminizin bu ad alanına erişim hakları yok ( ayrıntılar için http://go.microsoft.com/fwlink/?LinkId=70353 adresine bakın).

Hiç aynı durumla karşılaştınız mı? Her tavsiyeyi görmekten memnuniyet duyacağım.


Kafam karıştı. HTML'den kaçan metnin kodun bir parçası olması gerekiyor mu?
Amy

1
diğer seçenek için buraya bakın [ stackoverflow.com/questions/885744/…
shankbond

Yanıtlar:


231

Maalesef, istisna metnindeki bağlantı http://go.microsoft.com/fwlink/?LinkId=70353 kesildi. Ancak, izinlerin nasıl ayarlanacağını açıklayan http://msdn.microsoft.com/en-us/library/ms733768.aspx adresine yol açar .

Temel olarak aşağıdaki komutu kullanmanızı bildirir:

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

Yardımını kullanarak ayrıntılar hakkında daha fazla yardım alabilirsiniz. netsh

Örneğin: netsh http add ?

http addKomuta konusunda yardım verir .


3
Bu yöntem, otomatik test sunucusunda gerekli izinleri ayarlamak için de yararlıdır.
Technobabble

8
Komutu Yönetici Komut isteminden çalıştırdığınızdan emin olun.
mbonness

3
Bir alan adında değilseniz COMPUTER_NAME\USER_NAME, yukarıdaki komutta kullanın.
dotNET

netsh http add urlacl url=http://+:80/ user=DOMAIN\userhesaba bağlantı noktasındaki ad alanlarına erişim hakkı vermek istiyorsanız bunu çalıştırabilirsiniz .
Hamid Heydarian

Bu istemci makinede veya sunucuda veya her ikisinde birden yapılmalı mıdır? ve http: //? istemcinin veya sunucunun ip? Her zamanki gibi yardım işe yaramaz
GuidoG

177

Visual Studio IDE'yi kapattım ve Visual Studio simgesine sağ tıklayıp "Yönetici Olarak Çalıştır" diyerek yeniden açtım, sonra ana bilgisayarı çalıştırdığımda çalıştı!


17
İlk olarak, Visual Studio burada çok az seçenek bırakmasına rağmen bu kötü bir uygulamadır. İkinci olarak, sorun diğer adımlarda kalır (örneğin konuşlandırılır). Bryan'ın cevabına veya bloglarına
Stéphane Gourichon

3
İyi keder! Friggin MS, kendisiyle savaşan farklı işlevler yapıyor. 'En az ayrıcalık' için çok fazla.
Dan Csharpster

1
En iyi uygulama ya da değil, bu MS. Neden WCF / .NET o kadar özel ki atlamak için bir kasnağa daha ihtiyaç duyuyor? Windows'da çalışan Java'da bir hizmet yazarsam, yerel olarak çalışır. Herkese açık hale getirmek istersem güvenlik duvarını, değiştiriciyi, yönlendiriciyi vb.
Kai Wang

1
-1. Bu yapılacak doğru şey değil. Kısıtlı bir kullanıcıya açık izin vermeli ve bunu kullanmalısınız. @ Bryan'ın aşağıdaki cevabı daha iyi.
Daniel James Bryars

2
-1. Sorun olduğunda sabit diski yeniden biçimlendirmek ve sorunun çözüldüğünü söylemekle aynı şeydir. Yanıt, belirtildiği gibi, netssh'i çalıştırmaktır
Stan Bashtavenko

19

Visual Studio> Yönetici Olarak Çalıştır> Projenizi açın ve hizmeti çalıştırın. Bu ayrıcalıkla ilgili bir konudur.


Benim için çalıştı. Teşekkürler!
Losbear

14

Makineniz yerel alan ağındaysa, hesabınız için bazı Yönetici ayrıcalıklarına sahip olmanız gerekir.


2
WCF windows servisim için yapmam gereken buydu. Hizmeti bir yapı makinesinde çalıştırmak için yeni bir etki alanı hesabı kullanıyordum. Hizmetim başlatılır ve sonra bu istisnayı atar. Yönetici haklarını verdikten sonra mükemmel çalıştı.
thehelix

Bu benim için çözdü. Hizmeti sağ tıklayın ve "oturum açma" sekmesinde "Yerel Sistem hesabı" nı seçin
Alexander Derck

11

Yapmanız gereken en basit şey, Visual Studio ortamınızı kapatmak ve 'Yönetici olarak çalıştır'ı kullanarak tekrar açmaktır. Şimdi başarıyla çalıştırılmalıdır.


18
Yönetici olarak çalıştırmak sadece sorunları önler, onları çözmez.
ProfK

6

Windows Vista ve sonraki sürümlerde, HTTP WCF hizmeti öğeleri, kısıtlanmış bir hesabın buna uygun olmadığı için bahsettiğiniz istisnanın oluşmasına neden olur. Yönetici olarak çalıştırdığınızda çalışmasının nedeni budur.

Her mantıklı geliştirici Yönetici yerine RESTRICTED hesabı kullanmalıdır, ancak birçok kişi yanlış yola girer ve bu yüzden gerçekten gerekli olmadığında DEMAND yönetici izinleri olan çok fazla uygulama vardır. Tembel şekilde çalışmak tembel çözümlerle sonuçlanır. Umarım hala kısıtlı bir hesapta çalışırsınız (tebriklerim).

WCF için tanımladığınız bu hizmet URL'lerinde kısıtlı kullanıcı izinleri vermesi gereken doğru hatırlıyorsam, NamespaceManagerTool adında bir araç (2008'den itibaren) var. Yine de kullanmadım ...


Düşündüğünüz araca Http Ad Alanı Yöneticisi denir. MS tarafından desteklenmemektedir, ancak burada bulunabilir: blogs.msdn.com/b/paulwh/archive/2007/05/04/…
Gareth

1

Satırdan Console.ReadLine()önce a eklemeyi unuttuğunuz için örnek kodunuz gösterildiği gibi çalışmaz serviceHost.Close(). Bu, konağın açılıp hemen kapatıldığı anlamına gelir.

Bunun dışında, makinenizde izin sorunu olduğu anlaşılıyor. Makinenizde yönetici hesabı olarak oturum açtığınızdan emin olun. Yöneticiyseniz, HTTP isteklerini işlemek için World Wide Web Publishing Service (W3SVC) çalışmıyor olabilir.


Zaten bu sorunu çözdüm ve bu benim cmd hesabım nedeniyle değil ve (tabii ki) ReadLine () nedeniyle değil - çünkü nokta istisna (cmd sonucu değil).
valecoder


1

Bu sorunu diğer kullanıcıların çözümlerini takiben bir bilgisayarda çözebildim, ancak komut netshmakinemden birinde sorunu çözmedi ve mevcut kullanıcının yönetici hakları olmasına rağmen "HTTP URL kaydedilemedi . " .... İşleminizin bu ad alanına erişim hakkı yok ". Bu yüzden, diğer çözümlerle de çalışamamanız durumunda çözümümü paylaşıyorum.

Ayrıca web sitemin fiziksel dizinindeki kullanıcıya yazma izinleri vermeye çalıştıktan ve başarı elde edemedikten sonra, sonunda IIS ayarlarını değiştirmeye karar verdim .

Aşağıdaki resimlerin gösterdiği gibi, Fiziksel Yol Kimlik Bilgilerini yapılandırdım web sitemin DOMAIN \ kullanıcı adı ve parolasına sahip bir yönetici hesabı olan belirli bir kullanıcı olarak bağlanacak şekilde ve bu hatayı hayal kırıklığına uğratmak için yeterliydi.

resim açıklamasını buraya girin

resim açıklamasını buraya girin

resim açıklamasını buraya girin


-1

İis express ve tüm tarayıcıları kapatın (url herhangi bir tarayıcıda açılmışsa). Visual studio IDE'yi yönetici modunda da açın. Bu sorunumu çözdü.


Sorunu çözmedi. Yönetici modunda bir IDE kullanmak başka bir sorundur ve muhtemelen daha ciddidir.
Preza8
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.