2009-04-03 3 views
3

인사말!WCF Newbie 질문 : JavaScript에서 메서드 호출

저는 WCF를 처음 접했고 ASP.NET 웹 서비스와 비슷하다고 생각했지만 클라이언트 측 JavaScript에서 메서드를 호출 할 수 없습니다.

<form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     <Scripts> 
      <asp:ScriptReference Path="~/test.js" /> 
     </Scripts> 
     <Services> 
      <asp:ServiceReference Path="~/MyService.svc" /> 
     </Services> 
     </asp:ScriptManager> 
    </div> 
    <button onclick="test()">Click Me</button> 
</form> 

내 서비스의 인터페이스는 다음과 같습니다 :

namespace Test 
{ 
    [ServiceContract(Namespace = "Test")] 
    public interface IMyService 
    { 
     [OperationContract] 
     void DoWork(); 

     [OperationContract] 
     string SayHi(); 
    } 
} 

을 그리고 여기 그 구현의 :

namespace Test 
{ 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class MyService : IMyService 
    { 
     public void DoWork() 
     { 
     } 

     public string SayHi() 
     { 
      return "Hello, World!"; 
     } 
    } 
} 

그리고 마지막으로 자바 스크립트 :

function test() { 
    Test.MyService.SayHi(SayHiSuccess, SayHiError); 
} 

function SayHiSuccess(result) { 
    alert(result[0]); 
} 

function SayHiError(error) { 
    alert(error.toString()); 
} 
내 웹 양식은 다음과 같습니다

서비스의 SayHi() 메서드는 절대로 실행되지 않습니다. 물론 문제 해결 방법이나 이유가 확실하지 않습니다. 어떤 제안?

답변

3

web.config 내용을 게시하지 않았습니다. 어떤 바인딩을 사용하고 있습니까? 아마도 webHttpBinding을 사용해야합니다.

또한 .svc 파일 내용을 알면 도움이 될 수 있습니다. 시도한 적이 없지만 WebScriptServiceHostFactory을 서비스 호스트 팩토리로 사용하면 web.config를 전혀 수정할 필요가 없다는 것을 이해합니다.

<%@ ServiceHost Service="MyService" 
    Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" 
%> 

을, 여기에 몇 가지 자원이 당신을 위해 실패 다른 모든 경우 : 그것은 다음과 같이 SVC는 파일을 수정처럼 간단

0

코드가 정상적으로 보입니다. 옳은 일을해야합니다. WebService 및 WebMethod 특성을 추가 할 수도 있습니다.

WCF 웹 서비스를 디버깅하기 위해 일반적으로 Fiddler을 사용하여 디버거가 연결된 WCF 코드를 실행하는 동안 HTTP 호출을 추적합니다 (대부분의 경우 Visual Studio에서 실행 됨).