2009-07-27 1 views
0

ASP.NET (Framework 3.5), AJAX 및 JSON을 작동 시키려고합니다. 나는 그 두 가지 질문을했다.AJAX를 통해 WCF JSON 데이터를 호출하는 ASP.NET (3.5) ScriptManager에 대한 도움이 필요합니다.

[AspNetCompatibilityRequirements(RequirementsMode = 
     AspNetCompatibilityRequirementsMode.Allowed)] 

나는, 인터페이스 선언 위에 만 클래스를 추가 할 수없는 것을 발견 : 나는 ASP.NET에 의해 필요에 따라 아래의 태그를 추가 할 때 첫 번째이다. 나는이 코드를 인터페이스로하고 싶다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?

특성 AspNetCompatibilityRequirements이 선언 유형에 유효하지 입니다 다음과 같이 오류입니다. 은 '클래스'선언에서만 유효합니다.

[ServiceContract(Namespace = "API.Trade")] 
    [AspNetCompatibilityRequirements(RequirementsMode = 
     AspNetCompatibilityRequirementsMode.Allowed)] 
    public interface ITradeService 
    { 
     [OperationContract(Name = "GetAllCategories")] 
     string GetCategories(string itemtype, string keywordstring); 

     [OperationContract(Name = "GetCategoryByNodeLevel")] 
     string GetCategories(int NodeLevel); 

     [OperationContract] 
     int GetTrades(string KeywordString, string TradeType); 
    } 

두 번째 질문은 ASPX 스크립트 관리자 태그에있다 :

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Services> 
<asp:ServiceReference Path="?" /> 
</Services> 
</asp:ScriptManager> 

나는 경로 = 속성이 SVC는 파일을 가리키는되어야한다는 것을 알 수 있습니다. 지금까지 WCF 클래스 라이브러리를 사용하여 성공적으로 필요한 작업을 수행했습니다. 클래스 라이브러리 에는 컴파일 한 Trade.cs, TradeService.cs 및 ITradeService.cs 파일이 있고 내 웹 프로젝트에서 내 웹 서비스로 참조하는 사람은 입니다.

그래서 "경로 ="를 가리켜 야합니까? 또는 무엇을 추가해야합니까?

내가가는대로 배우고 있으며 양해 해 주셔서 감사합니다. 미리 감사드립니다.

답변

0

첫 번째 질문과 관련하여. 속성은 클래스에만 적용되도록 정의되므로 다른 것에 선언 할 수 없습니다.

경로는 서비스가 수신하는 엔드 포인트 (예 :/services/myserivce)를 가리켜 야합니다.

0

경로는 HTTP 서비스의 서비스 끝점 : http://host.example.com/tradeservice.svc/method이어야합니다.

속성은 인터페이스 자체가 아닌 인터페이스 구현 (클래스)에만 적용 할 수 있습니다.

0

두 번째 대답은. 나는 경로가 실제 webservice 끝점 (.svc 또는 오래된 하나를 가리 키도록 요구해야한다고 생각한다. 나는 맨 위의 머리를 잊는다, 미안).

당신이 할 수있는 일은 WebService, TradeService.svc를 생성하고 ITradeService 인터페이스를 구현하는 것입니다. 서비스의 개인 변수로 TradeService의 인스턴스를 만들고이를 프록시로 사용하면 ...

private TradeService _proxy; 

public string MyMethod(){ 
    _proxy.MyMethod(); 
} 

make sence.

+0

안녕 Aquillin, 감사합니다. 내가 말하는 클래스의 요지를 얻지 만 클래스 라이브러리에서 만든 인터페이스를 공개하는 방법을 알아 차릴 수 있습니다. ITradeService에 USING 지시문을 추가하고 "_proxy.MyMethod"에서 사용할 수있는 DLL의 인터페이스 메서드 (MyMethod)에 대한 참조를 만들어야한다고 가정합니다. 나는 이것에 대해 어떻게 해야할지 잘 모르겠다 - 내가 가지고있는 WCF 클래스 라이브러리를 추가 한 후에 코드가 ITradeService에 대해 어떻게 보이는지 보여 줄 수 있습니까? 나는 여기에서 말이되게 만들었다. .. –

0
  • AspNetCompatibilityRequirementsAttribute.RequirementsMode은 필수 속성이 아니며 프로그램 호스팅 모드 설정을 사용할 수 있습니다 또는 당신은 serviceHostingEnvironment 태그를 사용하여 webconfig에서 같은 을 수행 할 수 있습니다
 
    <system.serviceModel> 
    <serviceHostingEnvironment ..> 
    </serviceHostingEnvironment> 
    </system.serviceModel> 

참조 : http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=vs.110).aspx

  • 당신이해야을 TradeService.svc를 수동으로 추가하여 프로젝트에 서비스 호스트 (.svc)를 추가하십시오. 새 항목> WCF 서비스를 추가하여 동일한 작업을 수행 할 수도 있지만 서비스 cs 파일보다 우선합니다. 당신이 이 있으면 당신의 SVC 파일은 다음 행 다음에 추가 할 수 있습니다 추가 : 자동으로 서비스에 ASP.NET AJAX 엔드 포인트를 추가합니다
 
    <%@ ServiceHost Language="C#" Debug="true" Service="TradeService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %> 

주 WebScriptServiceHostFactory 있다. 마지막으로 "path"속성을 새로 생성 된 "TradeService.svc"에 지정하십시오.

당신은 http://localhost.me/TradeService.svc

를 방문하여 서비스를 테스트 할 수 있습니다 그리고 Ajax를 지원 http://localhost.me/TradeService.svc/jsdebug

참조 테스트 할 수있다 : http://berniecook.wordpress.com/2012/01/08/consuming-a-wcf-service-with-jquery-or-scriptmanager/

소스 코드 : 그것에 대해 https://docs.google.com/open?id=0Bz2usIBCcor0NDQxZDc2ODYtNTUzMi00OTRlLTlhOGMtMGI4Y2RhNGIzYWNj

관련 문제