2012-03-25 4 views
4

내 서비스에서 얻으려고 시도 할 때 서비스 엔드 포인트로 실행되는 것으로 보이는 문제가 없습니다.서비스 끝 점이 없습니까?

시도하면 http://localhost:8000/hello/help 나는 <string>You entered help <string>을 볼 것으로 예상되지만 대신에만 끝점을 얻지 못하나요? 나는 설정 파일에 전혀 영향을주지 않고 콘솔 앱에서만 호스팅하고 있습니다.

호스트 :

namespace Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebHttpBinding binding = new WebHttpBinding(); 
      WebServiceHost host = 
      new WebServiceHost(typeof(Service1)); 
      host.AddServiceEndpoint(typeof(IService1), 
      binding, 
      "http://localhost:8000/hello"); 
      host.Open(); 
      Console.WriteLine("Hello world service"); 
      Console.WriteLine("Press <RETURN> to end service"); 
      Console.ReadLine(); 
     } 
    } 
} 

서비스 1 :

namespace WcfServiceLibrary1 
{ 
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together. 
    public class Service1 : IService1 
    { 
     public string GetData(string value) 
     { 
      return string.Format("You entered: {0}", value); 
     } 

IService1 :

[ServiceContract] 
public interface IService1 
{ 
    [WebGet(UriTemplate = "/{value}")] 
    string GetData(string value); 

답변

6

는/{값}에서를 제거하고가 OperationContract로 나열되어 있는지 확인하십시오. 그것은해야한다 :

[WebGet(UriTemplate = "{value}")] 
[OperationContract] 

기본 URL이 후행 슬래시를 통해 올 것이다, 그래서 당신은 정말 현재 코드에 http://localhost:8000/hello//help를 찾고 있습니다

+0

안녕하세요 저스틴 다시 내게있어/{value} 내 URL이 있기 때문에 : http : // localhost : 8000/안녕 끝내는 슬래시/나는 그것을 생각할 수도 있지만 상관 없어요. 문제. –

+0

@Garrith 제 답변을 업데이트했으며 OperationContractAttribute도 누락되었습니다. –

+0

LOL 운영 계약이 누락되었습니다! +1 –

0

기본적으로 어두운 ...에있는 자상, 임의의 프로세스 네트워크 포트에서 수신 대기 할 수 없습니다.

IIS를 설치하면 IIS를 실행하는 계정에 권한이 부여됩니다. 다른 응용 프로그램 (콘솔 응용 프로그램, Windows 서비스)이 다른 응용 프로그램을 실행하여 포트를 수신하게하려면 권한을 부여해야합니다.

시작 지점으로 netsh add urlacl 명령을 확인하십시오.

+0

하지만 vs2010은 관리자 권한으로 실행됩니까? –

+0

관리자가된다는 것은 모든 권한을 가지고 있음을 의미하는 것이 아니라 자신에게 권한을 부여한다는 것입니다. 최근 WCF 서비스를 자체 호스팅하는 Windows 서비스에서 작업하고있었습니다 (즉석에서 재구성 허용). netsh를 사용하여 권한을 부여 할 때까지 서비스에 액세스 할 수 없었습니다. 당시 VS2010을 Windows Server 2008 R2에서 사용하고있었습니다. – Bevan

관련 문제