2011-08-04 1 views
1

를 개최404 오류 내가 메시지를 얻을 WCF 테스트 클라이언트를 사용하여 엔드 포인트에 연결할 때이 문제에 봉착 WCF 서비스

http://localhost:8080/evals/basic

나 '에서 메타 데이터를 가져올 수 없습니다 m 끝점을 첨가

private ServiceHost _serviceHost; 

    public ServiceHost ServiceHost 
    { 
     get { return _serviceHost?? (_serviceHost= new ServiceHost(typeof(EvalService))); } 
    } 

    public void Start() 
    { 
     ServiceHost.AddServiceEndpoint(typeof(IEvalService), 
           new BasicHttpBinding(), 
           "http://localhost:8080/evals/basic"); 
     ServiceHost.AddServiceEndpoint(typeof(IEvalService), 
           new WSHttpBinding(), 
           "http://localhost:8080/evals/ws"); 
     ServiceHost.AddServiceEndpoint(typeof(IEvalService), 
           new NetTcpBinding(), 
           "net.tcp://localhost:1002/evals"); 
     ServiceHost.Open(); 
    } 

을 사용하여 코드의 호스트를 시작하고 난 상태를 확인할 때,이 방법

private void ShowServiceInfo() 
    { 
     var message = String.Format("{0} is {1} with these endpoints:\n", _host.ServiceHost.Description.ServiceType, _host.ServiceHost.State); 
     foreach (var serviceEndpoint in _host.ServiceHost.Description.Endpoints) 
     { 
      message += "\n" + serviceEndpoint.Address; 
     } 
     MessageBox.Show(message); 
    } 
을 사용 617,451,515,

그때 내가이 엔드 포인트 열립니다 확인

HostService.EvalService를 실행하는 모든처럼 보이는이 메시지 :

http://localhost:8080/evals/basic 통해 http : // localhost : 8080/evals/WS net.tcp : // localhost : 1002/evals

엔드 포인트로 탐색하는 것이 효과가없는 이유는 누구나 알 수 있습니까? -에 대한 메타 데이터를 교환 할 수있는 엔드 포인트

1) 당신은 어떤 MEX 엔드 포인트를하지 않는 것 : (당신이 필요한 설정 파일을 제공하지 않았다)하지만 사람들을 확인할 수 없습니다 -

+0

권한이 있습니까? 관리자로 앱 실행을 시도 했습니까? 엔드 포인트가 허용되지 않는 한 (방법을 잊어 버리거나) 앱을 관리자 권한으로 실행하지 않는 한 앱이 w/서로 통신 할 수 없다는 것을 알고 있습니다. 어쩌면 하나의 앱에서 동일 할 수도 있습니다. –

+0

UAC가 켜져 있지 않기 때문에 UAC가 활성화되었을 때만 가능하겠습니까? 또한 내가 App.config 통해 끝점을 구성하려고하면이 예외가 발생합니다 --------------------------- System.InvalidOperationException : Service 'HostService.EvalService'에는 응용 프로그램 (비 인프라) 엔드 포인트가 없습니다. 이것은 응용 프로그램에 대한 구성 파일이 없거나 서비스 이름과 일치하는 서비스 요소가 구성 파일에서 발견되지 않았거나 서비스 요소에 엔드 포인트가 정의되지 않았기 때. 일 수 있습니다. –

+0

또한 시작 프로젝트를 내 WCF 프로젝트로 설정하면 WCF 서비스 호스트에서이 예외가 발생합니다. System.InvalidOperationException : ServiceMetadataBehavior의 HttpGetEnabled 속성이 true로 설정되고 HttpGetUrl 속성이 상대 주소이지만 아무런 응답도 없습니다 http 기본 주소. http 기본 주소를 제공하거나 HttpGetUrl을 절대 주소로 설정하십시오. –

답변

2

나는 두 가지 문제를 참조 에 대한 서비스. 서비스 호스트에 명시 적으로 추가해야 함 - HTTP 또는 Net.Tcp 프로토콜에 대해 MEX 끝점을 사용할 수 있음

2) 서비스 메타 데이터를 서비스의 서비스 동작 (예 : 일반적으로 서비스 동작)으로 사용할 수 있는지 여부는 확인할 수 없습니다. 이 작업은 config (제공하지 않은 작업)에서 수행하거나 코드에서이 동작을 추가 할 수 있습니다.하지만 명시 적으로 추가해야합니다. 장소에 어떤 MEX 인프라없이

ServiceMetadataBehavior metadataBehavior; 
metadataBehavior = ServiceHost.Description.Behaviors.Find<ServiceMetadataBehavior>(); 

if(metadataBehavior == null) 
{ 
    metadataBehavior = new ServiceMetadataBehavior(); 
    metadataBehavior.HttpGetEnabled = true; 
    ServiceHost.Description.Behaviors.Add(metadataBehavior); 
} 

, 아니 클라이언트는 방법과 매개 변수에 대한 서비스를 조회 할 수 없습니다 - WCF 테스트 클라이언트가 작동하지 않습니다 그 이유는. 서비스 메타 데이터 동작과 최소한 하나의 MEX 끝점을 추가하면 잘됩니다.

+0

알맞은 위치에 있다고 생각합니다. 따라서 모든 서비스에 대한 mex 끝점이 필요합니까? –

+0

@ Nitro52 : "발견 가능성"을 원하면 - 예, MEX가 필요합니다. 따라서 MEX 서비스 동작과 MEX 종점이 모두 필요합니다. 그 같은 서비스는 MEX가 없어도 잘 작동 할 것입니다. 그러나 당신은 단지 "발견"할 수없고 그 방법 등을 요구할 수 없습니다. –

+0

나는 mex 종점을 추가하고 아직도 일하지 않는다 ... 모든 관련 코드를 가진 나의 포스트를 검사하십시오 ... http://stackoverflow.com/questions/7192877/selfhosted-wcf-service-cant-be-tested-via -wcftestclient – user20358

관련 문제