저는 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 참조).
같은 상황에 처한 적이 있습니까? 나는 모든 조언을 보게되어 기쁘다.
답변
불행히도 예외 텍스트 ( 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
명령 에 도움을줍니다 .
답변
Visual Studio IDE를 닫고 Visual Studio 아이콘을 마우스 오른쪽 단추로 클릭하고 “관리자 권한으로 실행”이라고 말하여 다시 열었습니다. 그런 다음 호스트를 실행할 때 작동했습니다 !!!
답변
Visual Studio를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행> 프로젝트를 열고 서비스를 실행하십시오. 이것은 특권 관련 문제입니다.
답변
로컬 영역 네트워크에있는 컴퓨터가 사용자에게 일부 관리자 권한을 적용하는 경우 계정에 대한 관리자 권한이 필요합니다. 그렇지 않으면 관리자로 시작해야합니다.
답변
간단한 작업은 ‘관리자 권한으로 실행’을 사용하여 Visual Studio 환경을 닫고 다시 여는 것입니다. 이제 성공적으로 실행됩니다.
답변
Windows Vista 이상에서는 제한된 계정에 해당 권한이 없기 때문에 HTTP WCF 서비스로 인해 예외가 발생합니다. 이것이 관리자 권한으로 실행할 때 작동 한 이유입니다.
모든 현명한 개발자는 관리자가 아닌 RESTRICTED 계정을 사용해야하지만 많은 사람들이 잘못된 길을 가고 있기 때문에 실제로는 필요하지 않을 때 DEMAND 관리자 권한을 갖는 응용 프로그램이 너무 많습니다. 게으른 방식으로 작업하면 게으른 솔루션이됩니다. 나는 당신이 여전히 제한된 계정으로 일하기를 바랍니다 (축하합니다).
WCF에 대해 정의한 이러한 서비스 URL에 대해 제한된 사용자 권한을 부여해야하는 것을 올바르게 기억하는 경우 NamespaceManagerTool이라는 도구가 2008 년부터 있습니다. 나는 그것을 사용하지 않았습니다 …
답변
Console.ReadLine()
앞에 serviceHost.Close()
줄 을 포함하는 것을 잊었으므로 샘플 코드가 표시된대로 작동하지 않습니다 . 즉, 호스트가 열리고 즉시 닫힙니다.
그 외에는 컴퓨터에 권한 문제가있는 것 같습니다. 컴퓨터에서 관리자 계정으로 로그인했는지 확인하십시오. 관리자 인 경우 HTTP 요청을 처리하기 위해 W3SVC (World Wide Web Publishing 서비스)가 실행되고 있지 않을 수 있습니다.
