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
{
.........
}
前もって感謝します!