1

ASP.NET Web サイト プロジェクトがあります。以前は、asmx Web サービスを使用していました。現在、WCF サービスがあり、jQuery でクライアント プロキシ オブジェクトを使用して WCF サービスを呼び出そうとしています。asmx を使用すると、次のコード行で Web サービスを呼び出すのはかなり簡単でした。

function GetBooks() {
    $.ajax({
        type: "POST",
        data: "{}",
        dataType: "json",
        url: "http: /WebService.asmx/GetBooks",
        contentType: "application/json; charset=utf-8",
        success: onSuccess
    });
}

WebServiceクラスのメソッドは

[WebMethod(EnableSession = true)]
public Books[] GetBooks()
{
       List<BooksTO> dtos = BooksDTOUtils.GetBooks(entityOwnerID);
       return dtos.ToArray();
}

ここで、GetBooks_Wcf() メソッドを jQuery から呼び出す必要があります。新しいクラス (WcfCall.cs) でクライアント プロキシを使用して、wcf メソッド GetBooks を呼び出しています。

  public Books[] GetBooksWcf()
{
        var service = WcfProxy.GetServiceProxy();
        var request = new GetBooksRequest();
        request.entityOwnerID= entityOwnerID;
        var response = service.GetBooks(request);
        returnresponse.Results.ToArray();
}

私のプロキシ(Wcfproxy.cs)は

 public static Service.ServiceClient GetServiceProxy()
{
    var Service = Session["Service"] as Service.ServiceClient;
    if (Service == null)
    {
        // create the proxy
        Service = CreateServiceInstance();

        // store it in Session for next usage
        Session["Service"] = Service;
    }

    return Service;
}

   public static Service.ServiceClient CreateServiceInstance()
   {
    ServicePointManager.ServerCertificateValidationCallback = new        RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler);

    string configValue = Environment.GetConfigSettingStr("WcfService");

    Service.ServiceClient webService = new Service.ServiceClient();
    //Here is my WCF endpoint
    webService.Endpoint.Address = new System.ServiceModel.EndpointAddress(configValue);

    return webService;
}

私の質問は、jQuery から GetBooksWcf を呼び出すにはどうすればよいですか? 私は reference.cs を作成しました。上記のメソッドの Service.ServiceClient は以下の reference.cs にあります。また、パラメーター「entityOwnerID」は機密性が高く、JQuery から渡すことができません。永続化するか、web.config からキーとして呼び出す必要があります。

 [System.Diagnostics.DebuggerStepThroughAttribute()]
  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
  public partial class ServiceClient : System.ServiceModel.ClientBase<Service.IService>, Service.IService
  {
      .........  
   } 

前もって感謝します!

4

1 に答える 1

1

WCF サービスの .NET プロキシは、jQuery でそのまま使用することはできません。

AspNetCompatibilityRequirementsおよびWebInvoke属性を使用して、JavaScript または jQuery を介して WCF サービスを使用できるようにする必要があります (こちらを参照)。

于 2012-06-14T17:02:54.040 に答える