HTTP가 URL http : // + : 8000 / HelloWCF /를 등록 할 수 없습니다. 프로세스에이 네임 스페이스에 대한 액세스 권한이 없습니다


179

저는 WCF의 초보자이지만 경험을 향상시키기 위해 노력하고 있습니다. 그리고 첫 단계에서 나는 문제에 직면했다. 가장 간단한 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 이스케이프 처리 된 텍스트가 코드의 일부로 간주됩니까?
Amy

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
이 방법은 자동화 된 테스트 서버에서 필요한 권한을 설정하는 데에도 유용합니다.
Technobabble

8
관리자 명령 프롬프트에서 명령을 실행하십시오.
mbonness

3
도메인이 아닌 경우 COMPUTER_NAME\USER_NAME위의 명령을 사용하십시오.
dotNET

netsh http add urlacl url=http://+:80/ user=DOMAIN\user포트의 모든 네임 스페이스에 대한 계정 액세스 권한을 계정에 부여하려는 경우 이를 실행할 수 있습니다 .
Hamid Heydarian

클라이언트 시스템이나 서버 또는 둘 다에서 사용하지 않아야합니까? http : //에서 무엇을 사용해야합니까? 클라이언트 또는 서버의 IP? 평소와 같이 도움은 쓸모가 없습니다
GuidoG

177

Visual Studio IDE를 닫고 Visual Studio 아이콘을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"이라고 말하여 다시 열었습니다. 그런 다음 호스트를 실행할 때 작동했습니다 !!!


17
첫째, Visual Studio는 선택의 여지가 거의 없지만 나쁜 습관입니다. 둘째, 문제는 다른 단계 (예 : 배포)에 남아 있습니다. Bryan의 답변 또는 blogs.msdn.com/b/paulwh/archive/2007/05/04/…
Stéphane Gourichon

3
맙소사! Friggin MS는 자체적으로 싸우는 다른 기능을 만듭니다. '최소한 특권'을 위해 너무 많은.
Dan Csharpster

1
가장 좋은 방법은 MS에 있습니다. 왜 WCF / .NET이 너무 특별해서 뛰어 넘을 수있는 고리가 더 필요한가? Windows에서 실행되는 Java로 서비스를 작성하면 로컬에서 작동합니다. 공개하려면 방화벽, 스위처, 라우터 등을 조정하십시오.
Kai Wang

1
-1. 이것은 올바른 일이 아닙니다. 제한된 사용자에게 명시적인 권한을 부여하고 사용해야합니다. 아래 @Bryan의 답변이 더 좋습니다.
Daniel James Bryars

2
-1. 문제가있을 때 하드 드라이브를 다시 포맷하고 문제가 해결되었다고 말하는 것과 같습니다. 대답은 지적한 바와 같이 netssh를 실행하는 것입니다
Stan Bashtavenko

19

Visual Studio를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행> 프로젝트를 열고 서비스를 실행하십시오. 이것은 특권 관련 문제입니다.


나를 위해 일했다. 감사!
Losbear

14

로컬 영역 네트워크에있는 컴퓨터가 사용자에게 일부 관리자 권한을 적용하는 경우 계정에 대한 관리자 권한이 필요합니다. 그렇지 않으면 관리자로 시작해야합니다.


2
이것이 WCF Windows 서비스에 필요한 작업입니다. 새 도메인 계정을 사용하여 빌드 머신에서 서비스를 실행하고있었습니다. 내 서비스가 시작된 다음 해당 예외가 발생합니다. 관리자 권한을 부여하면 완벽하게 작동했습니다.
thehelix

이것은 나를 위해 해결했습니다. 서비스를 마우스 오른쪽 버튼으로 클릭하고 "로그온"탭에서 "로컬 시스템 계정"을 선택하십시오
Alexander Derck

11

간단한 작업은 '관리자 권한으로 실행'을 사용하여 Visual Studio 환경을 닫고 다시 여는 것입니다. 이제 성공적으로 실행됩니다.


18
관리자 권한으로 실행하면 문제가 발생하지 않으며 문제가 해결되지 않습니다.
ProfK

6

Windows Vista 이상에서는 제한된 계정에 해당 권한이 없기 때문에 HTTP WCF 서비스로 인해 예외가 발생합니다. 이것이 관리자 권한으로 실행할 때 작동 한 이유입니다.

모든 현명한 개발자는 관리자가 아닌 RESTRICTED 계정을 사용해야하지만 많은 사람들이 잘못된 길을 가고 있기 때문에 실제로는 필요하지 않을 때 DEMAND 관리자 권한을 갖는 응용 프로그램이 너무 많습니다. 게으른 방식으로 작업하면 게으른 솔루션이됩니다. 나는 당신이 여전히 제한된 계정으로 일하기를 바랍니다 (축하합니다).

WCF에 대해 정의한 이러한 서비스 URL에 대해 제한된 사용자 권한을 부여해야하는 것을 올바르게 기억하는 경우 NamespaceManagerTool이라는 도구가 2008 년부터 있습니다. 나는 그것을 사용하지 않았습니다 ...


당신이 생각하는 도구는 Http Namespace Manager입니다. 그것은 MS에 의해 지원되지 않지만 여기에서 사용할 수 있습니다 : blogs.msdn.com/b/paulwh/archive/2007/05/04/…
Gareth

1

Console.ReadLine()앞에 serviceHost.Close()줄 을 포함하는 것을 잊었으므로 샘플 코드가 표시된대로 작동하지 않습니다 . 즉, 호스트가 열리고 즉시 닫힙니다.

그 외에는 컴퓨터에 권한 문제가있는 것 같습니다. 컴퓨터에서 관리자 계정으로 로그인했는지 확인하십시오. 관리자 인 경우 HTTP 요청을 처리하기 위해 W3SVC (World Wide Web Publishing 서비스)가 실행되고 있지 않을 수 있습니다.


나는 이미이 문제를 해결했고 그것은 내 cmd 계정 때문이 아니며 ReadLine () 때문이 아닙니다-cmd 결과가 아닌 예외가 발생합니다.
valecoder


1

다른 사용자 솔루션에 따라 한 컴퓨터에서이 문제를 해결할 수 있었지만 명령 netsh이 내 컴퓨터 중 하나에서 문제를 해결하지 못했으며 현재 사용자에게 관리자 권한이 있어도 "HTTP에서 URL을 등록 할 수 없습니다" .... 프로세스에이 네임 스페이스에 대한 액세스 권한이 없습니다. " 그래서 다른 솔루션과도 작동하지 않는 경우를 대비하여 솔루션을 공유하고 있습니다.

또한 내 웹 사이트의 실제 디렉토리에서 사용자에게 쓰기 권한을 부여하려고 시도했지만 성공하지 못했습니다. 마침내 IIS 설정변경 하려고했습니다 .

아래 이미지에서 볼 수 있듯이 DOMAIN \ username 및 password가있는 관리자 계정 인 특정 사용자로 연결하도록 내 웹 사이트 의 실제 경로 자격 증명 을 구성했으며 이로 인해 오류가 사라졌습니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


-1

iis express 및 모든 브라우저를 닫습니다 (URL이 브라우저에서 열린 경우). 또한 관리자 모드에서 Visual Studio IDE를 엽니 다. 이것은 내 문제를 해결했습니다.


문제가 해결되지 않았습니다. 관리자 모드에서 IDE를 사용하는 것은 또 다른 문제이며 더 심각 할 수 있습니다.
Preza8
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.