2012-03-25 3 views
13

나는이 IService.cs 공개 인터페이스 파일이 WcfService2 (원래 내가 아는)라는 이름의 서비스 : 다음 내 공용 클래스 Service1.svc.cs이ServiceHost를 단지 수준의 서비스 유형을 지원

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

그래서 같은 값에 대한 문자열을 반환 파일 :

namespace Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebHttpBinding binding = new WebHttpBinding(); 
      WebServiceHost host = 
      new WebServiceHost(typeof(IService1)); 
      host.AddServiceEndpoint(typeof(IService1), 
      binding, 
      "http://localhost:8000/Hello"); 
      host.Open(); 
      Console.WriteLine("I DONT LIKE REST!"); 
      Console.WriteLine("Press <RETURN> to KILL REST FOR GOOD"); 
      Console.ReadLine(); 
     } 
    } 
} 
: 지금과 같이 콘솔 응용 프로그램과 함께이 서비스를 호스트하기 위해 노력하고

namespace WcfService2 
{ 
    public class Service1 : IService1 
    { 
     public string GetData(string value) 
     { 
      return string.Format("You entered: {0}", value); 
     } 
    } 
} 

하지만 실행 후 오류가 발생합니다.

ServiceHost는 클래스 서비스 유형만 지원합니다.

이렇게 분명히 IService는 공용 인터페이스 유형입니다. 하지만 내가 처음 만들 때 그것을 만드는 방법을 모르겠다 WCF Service application 두 가지 표준 파일을 제공합니다 IService 및 Service.svc 파일 중 하나를 삭제하거나 또는 경우에만 웹 추가하려고하면 한 클래스에서이 솔루션을 구현하십시오 현지 soultion에있는 서비스는 아무것도 발견되지 않는다.

호스트 코드를 사용하는 방법이 있습니까?

+0

를 참조하시기 바랍니다 @ http://stackoverflow.com/q/19306395/16391 – StingyJack

답변

25

나는 당신이 이것을 변경하는 것이 좋습니다 :

WebServiceHost host = new WebServiceHost(typeof(IService1)); 

이에 :

WebServiceHost host = new WebServiceHost(typeof(Service1)); 
+1

이렇게하면이 오류가 발생합니다. '계약 유형 WcfService2.Service1이 ServiceContractAttribute로 귀속되지 않았습니다. 유효한 계약을 정의하려면 지정된 형식 (계약 인터페이스 또는 서비스 클래스)이 ServiceContractAttribute로 지정되어야합니다. ' –

+1

@ Garrith : 게시 된 코드로 인해 첫 번째 오류가 발생하지 않아야합니다. 파일을 삭제하는 것에 대한 귀하의 말은이 문제에 영향을 줄 수 있습니다. –

+3

이 대답을 읽는 사람은 다음을 참조하십시오. http://stackoverflow.com/questions/9864006/servicecontractattattribute-error-on-simple-wcf-service Becareful은 WebServiceHost가 Service1이고 AddServiceEndpoint가 IService1입니다! –

4

서비스를 구현하는 클래스로 WebServiceHost를 만들어야합니다.

WebServiceHost host = new WebServiceHost(typeof(Service1)); 

예를 들어 here을 읽으십시오.

+0

을 시도하는 또 다른 답이있다 윌 Marcouliers 대답에 답하십시오. –

관련 문제