WCF ServiceHost 액세스 권한


166

WCF 자습서를 진행할 때 다음 오류가 발생합니다.

HTTP가 http : // + : 8000 / ServiceModelSamples / Service / URL을 등록 할 수 없습니다 . 프로세스에이 네임 스페이스에 대한 액세스 권한이 없습니다 (자세한 내용은 http://go.microsoft.com/fwlink/?LinkId=70353 참조).

이것은 Windows 7의 제한으로 인한 것입니까?


블로그 에서 유용한 정보를 많이 찾을 수 있습니다 . 또한 멋진 GUI 도구를 제공합니다.
bob

답변:


179

문제는 Windows에서 URL을 만들 수 없다는 것입니다.

수정 단계 : 관리자 권한으로 명령 프롬프트를 실행하십시오. ACL에 URL 추가

netsh http add urlacl url=http://+:8000/ServiceModelSamples/Service user=mylocaluser

4
다행 이네요. "+"는 무엇을 의미 했습니까?
존 손더스

나는 그것이 일반적인 로컬 IP를 의미한다는 직감을 가지고 있습니다.
Joshua

12
참고 : url = http : // + : port / path를 정확히 입력해야합니다. url = address : port / path 가 작동하지 않았다고 생각합니다. 또한 서비스 설치 프로그램이 설정된 경우 네트워크 서버를 사용자 ( "NT AUTHORITY \ NETWORK SERVICE")로 사용해야합니다.
Mike Pateras 2016 년

8
어떤 방법 으로든 관리자 액세스가 필요하지 않습니까?
setzamora

1
사용자 계정을 사용하지 못했습니다. user = Everyone
Kim

90

IDE를 통해 실행중인 경우 관리자 권한으로 실행하면 도움이됩니다. Visual Studio 2008/10 응용 프로그램 아이콘을 찾으려면 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오.


22
실제로 '더 나은'솔루션은 아닙니다. @Liam – 회사 설정의 개발 환경에서 관리자 권한을 사용하면 위험한 작업을 수행 할 수있는 더 많은 권한을 부여 할 수 있습니다. 훨씬 쉬운 해결책은 확실하지만, 힘을 가지고 책임을진다 ...
Unsliced

2
원래 솔루션은 또한 관리자 권한으로 실행해야했으며, 더 짧은 기간 동안 허가를 받았으며 물론 보안 컨텍스트에서 수행중인 작업을 알고 있어야합니다.
Stephen Newman

1
어쨌든 관리자 권한 없이이 작업을 수행합니까?
setzamora

완전한. IDE에서 프로그램을 실행하여 다른 컴퓨터에 URL을 등록해야하고 관리자가 완벽하게 작동했습니다.
ThePartyTurtle

36

다른 해결책은 주소를 사용하는 것입니다

에 http : // localhost를 : 8732 / Design_Time_Addresses / YOUR_ADDRESS .

.NET Framework (3.5)는 디버깅 범위를 위해이 주소 (http : // * : 8732 / Design_Time_Addresses)를 자동으로 등록합니다. 이는 디버깅 또는 테스트를 위해 Visual Studio 내에서 서비스를 호스팅해야 할 때 유용합니다. 프로덕션에서는 이것을 사용하지 마십시오 ...


1
일부 사이트는 8732 대신 포트 8731을 참조합니다.
Nenad Dobrilovic

1
@DaviFiamenghi .net 3.5가 설치되어 있으면 작동합니다. 그러나 나는 결코 시도하지 않았다. 일반적으로이 통합 테스트와 같은 테스트를 고려하여 TFS에서 실행하지 않고 TFS에서만 단위 테스트를 실행합니다.
Davide Icardi

@ NenadDobrilovic 광산은 8733을 사용합니다 :). 그러나 그것은 중요하지 않습니다.
Hooch

1
우리 서버는 localhost : 8733 / Design_Time_Addresses를 사용 하고 있으며 답장 없이는 찾지 못했습니다. 또한, 밥의 도구는 퍼미션 된 모든 주소를 보여 주었다 - 즉, 나는 그것이 8733. 덕분 발견 방법
리 Oades

30

관리자 권한으로 명령 프롬프트를 열고 아래 명령을 작성하여 URL을 추가하십시오.

netsh http add urlacl url=http://+:8000/YourServiceLibrary/YourService user=Everyone

명심해야 할 몇 가지 사항 :

  1. 코딩에 따라 포트를 변경하십시오
  2. 라이브러리 이름에 따라 서비스 라이브러리 이름을 변경하십시오.
  3. "귀하의 서비스"는 선택 사항입니다

자세한 내용은 다음을 확인할 수 있습니다. HTTP 및 HTTPS 구성


3

Visual Studio를 관리자 권한으로 엽니 다. 실행됩니다.


nunit-gui와 같은 문제가있었습니다. 관리자로서 모두 뛰어났습니다.
Valamas

나는 2013 년과 동일한 문제가 있으며 관리자가 작동하지 않는 것처럼 실행 중입니다.
ZoomVirus

왜 관리자가 필요한지 왜 표준 사용자로 실행할 수 없습니까?
John


-2

Windows Vista에서 일하고 있습니다. 심지어 같은 문제에 직면했지만 관리자 권한으로 VS 2008을 실행하려고하면 문제가 해결되고 서비스가 시작되었습니다. :)


-2

관리자로 Visual Studio를 실행하면 문제를 해결할 수 있지만 TortoiseSVN과 같이 Visual Studio를 사용하는 경우 변경 내용을 커밋 할 수 없습니다. 또 다른 가능한 해결책은 서비스를 관리자로 실행하고 나머지 Visual Studio를 로컬 사용자로 실행하는 것입니다.


-3

관리 모드에서 Visual Studio를 연 다음 사용해보십시오.


-3

Visual Studio를 관리자 권한으로여십시오 :

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.