2013-03-19 1 views
2

특정 작업을 위해 WPF 응용 프로그램 내에서 자체 호스팅 서비스를 사용합니다. 서비스 호스트는 런타임에 시작되며 기본 주소는 http://localhost:Whatever-port-is-free-at-runtime입니다. 사용자가 관리자 권한을 가지고 있지만 제한된 사용자가 응용 프로그램을 실행할 때 문제가 발생하면 정상적으로 작동합니다.WCF ServiceHost 제한된 사용자 netsh/httpcfg

웹상에서 관리자가 잘 작동하지만 제한된 사용자에게는 URL을 예약하는 데이 도구를 사용할 권한이 없으므로 netsh/httpcfg을 사용하여 URL을 예약하는 것이 좋습니다. 런타임까지 포트 번호를 알 수 없으므로 url 예약 명령은 런타임에 논리적으로 만 실행될 수 있습니다. 즉, 명령을 실행할 권한이없는 제한된 사용자가 프로세스를 시작합니다. 나는 이것을 생각하는 것이 맞습니까?

내가 알고 싶은 것은 적절한 해결 방법이 있다면 무엇입니까? 또한 제한된 사용자가 로컬 WCF 서비스를 열 수 있는지 여부를 알고 싶습니다. 제한된 사용자가이 작업을 수행 할 수없는 경우 위에서 언급 한 문제를 해결할 때 무의미합니다. WCF에서

This question perfectly describes my first issue of URL reservation

+1

이 서비스는 클라이언트에서 사용하나요? 그렇다면 동적으로 생성되는 주소 변화에 따라 클라이언트가 서비스를 어떻게 소비 할 수 있습니까? 또한 WCF 서비스에 고정 포트를 사용할 수없는 이유는 무엇입니까? – Rajesh

+0

예, 다른 클라이언트가이를 사용합니다. 동적으로 생성 된 localhost : xxxx URL은 런타임에 클라이언트에 알려 지므로이 설정은 실제로 admin으로 실행될 때 작동하므로 문제가되지 않습니다. 하드 코드 된 포트 번호가 최종 사용자의 컴퓨터에서 사용 가능한지 여부를 확인할 수 없기 때문에 고정 포트를 가질 수 없습니다. 여전히 문제가 아니더라도 관계없이 네임 스페이스를 예약해야합니다. – Bablo

답변

1

는 HTTP 및 HTTPS 바인딩은 동일한 경로가 웹 사이트에 대한 바인딩을하는 동안 자체는 다음과 IIS하는 특정 WCF 서비스를 위해 필요한 URL을 예약하기 위해 커버 아래 인 HTTP.sys를 사용 그것은 관리합니다. 이것은 HTTP/HTTPS Y 인딩을 수행하는 프로세스가 상승 된 모드에서 실행되어야하는 이유를 설명합니다.

말했다되고 그건

, 나는 두 가지 방법으로 문제를 해결할 것입니다 :

옵션 1 : 바인딩의 다른 종류를 사용합니다. NetTcpBindingNetNamedPipesBinding 예를 들어, 을 입력하지 마십시오. 일반적으로에 관리자 권한이 필요합니다. 이것은 훨씬 쉬운 방법입니다.

옵션 2 : 설치시 필요한 네임 스페이스 예약을 설정하십시오. 이렇게하면 승격 모드에서 설치를 수행하고 나중에 제한된 계정에서 실행할 수 있도록 사용자에게 요청할 수 있습니다. 초기 설치/예약을 수행하는 동안 사용 가능한 포트를 찾을 수도 있습니다 (나중에 구성 파일에 저장하여 나중에 다시 사용할 수도 있음).

관련 문제