2013-09-24 2 views
24

Visual Studio 2010에서 C#으로 매우 기본적인 WCF 서비스를 만들고 있습니다. 브라우저에서 직접 메서드를 실행할 수 있는지 알고 싶습니다. //localhost:49815/Service1.svc/methodName(parameterValue)?브라우저에서 WCF 메서드 실행

여기 내 코드의 본질입니다.

인터페이스 :

using ... 
namespace WcfService1{ 
    [ServiceContract] 
    public interface IService1{ 
     [OperationContract] 
     [WebGet] 
     string echoWithGet(string s); 
     [OperationContract] 
     [WebInvoke] 
     string echoWithPost(string s); 
    } 
} 

방법 :

public string echoWithGet(string s){ 
      return "Get: "+s; 
     } 

public string echoWithPost(string s){ 
      return "Post: " + s; 
     } 
+2

그냥 궁금해서 ... 시도해 보셨습니까? –

+0

참고 : http://msdn.microsoft.com/en-us/library/bb412178.aspx –

+0

예, "시도"하여 내 제안 된 형식을 통해 메서드를 호출하는 참조하는 경우. – javaNinja

답변

40

예, 브라우저에서 해당 메서드를 호출 할 수 있습니다. 서비스가 올바르게 구성된 경우 URL 구문이 잘못되었지만이 메서드를 호출 할 수 있습니다.

브라우저에서 WCF 메소드를 호출하려면 두 가지 작업을 수행해야합니다 작업을 완료 한 당신의 방법에

  • 사용 [WebGet][WebInvoke] 속성.
  • 서비스 끝점으로 webHttpBinding을 사용하고 webHttp 동작을 사용하십시오. 샘플 구성 http://weblogs.asp.net/kiyoshi/archive/2008/10/08/wcf-using-webhttpbinding-for-rest-services.aspx을 볼 수 있지만, 관련 부분은 다음과 같습니다

    <service> 
        <endpoint behaviorConfiguration="webBehavior" binding="webHttpBinding" contract="MyServiceContract" /> 
    </service> 
    
    <endpointBehaviors> 
        <behavior name="webBehavior"> 
         <webHttp /> 
        </behavior> 
    </endpointBehaviors> 
    

을가 완료되면, WCF가 해당 웹 메소드에 대한 URL 요청 및 경로 그들을 위해 듣기 시작합니다. WebGet 또는 WebPost 속성에서 URL 템플릿을 메소드 매개 변수로 매핑하는 URL 템플릿을 설정할 수 있습니다.이 경우 URL을 "더 깨끗하게"만들려고하는데 선택 사항입니다. 그렇지 않으면, 당신은 매개 변수 구분 기호를 사용하여 매개 변수 당신이 다른 URL에 매개 변수를 전달 같은 방식으로 전달합니다 웹 호출 방법의 기본은 POST입니다

http://localhost:49815/MyService.svc/methodName?parameterName=value 

하는 것으로. 기술적으로 당신 일 수 있습니다. 브라우저를 통해 이러한 작업을 수행 할 수 있지만 로컬 HTML 양식을 작성하거나 Javascript 콘솔을 사용하거나 비슷한 것을 사용하는 것이 훨씬 어렵습니다. 그러나 올바른 URL을 요청하면 WebGet 메소드를 호출 할 수 있습니다. .

또한 메서드가 문자열보다 복잡한 것을 반환하면 WCF는 JSON으로 직렬화하려고 시도합니다. 그것을 보려면 결과 페이지에서 '소스보기'가 필요할 수 있습니다.

+0

'webHttpBinding'을 사용하는 브라우저에서 WCF 메서드에만 액세스 할 수있는 것처럼 들리므로이 대답은 오해의 소지가 있습니다. 그럴까요? ''지시어는 어떨까요? –

+0

당신은 한가지 더 필요합니다 ... uri – GomuGomuNoRocket

4

이 귀하의 질문에 대답하지만,하지 않습니다 당신의 삶을 RESTful (또는 REST -처럼). WCF로 할 수는 있지만 ASP.NET Web API을 살펴 보는 것이 좋습니다.

Nancy 또는 ServiceStack과 같이 RESTful 서비스를 만드는 데 사용할 수있는 다른 방법이 있습니다.

1

직접적인 대답. GET 메소드의 경우 브라우저를 사용하여 결과를 볼 수 있습니다. POST 메서드 게시 메서드에 대한 URL을 직접 붙여 넣는 경우 브라우저를 사용할 수 없습니다. POST를 수행하려면 HTML 양식을 만들거나 FIDDLER를 사용하여 결과를 확인하십시오.