怎样用js调用wcf服务

JavaScript011

怎样用js调用wcf服务,第1张

需要System.Web.Extensions.dll(可能需要AJAXExtensionsToolbox.dll)

网上下载ASPAJAXExtSetup

使用的时候把上面的2个dll放到bin下,并添加引用(一般服务器没有安装ASPAJAXExtSetup)

==============================

Web服务

==============================

using System

using System.Web

using System.Collections

using System.Web.Services

using System.Web.Services.Protocols

using System.Web.Script.Services

using System.Data

using System.Text.RegularExpressions

/// <summary>

/// addComment 的摘要说明

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ScriptService]

public class manageComment : System.Web.Services.WebService

{

[WebMethod(EnableSession = true)]

public string CommentByID(string userName)

{

//支持session

}

public string DeleteHostComment(int replayID)

{

}

}

aspx页面设置web服务文件的路径

===============================

<asp:ScriptManager ID="smAddComment" runat="server">

<Services>

<asp:ServiceReference Path="~/WS/manageComment.asmx" />

</Services>

</asp:ScriptManager>

js调用

=================================

manageComment.CommentByID('名称')

manageComment.DeleteHostComment(1)

tip:调用的格式->[命名空间.]类名.方法名(参数1[,参数2……])

直接放在data里会把参数以json的形式直接放在body发出去,而的headers里面又设置成了content-type是application/x-www-form-urlencoded,所以就会被认为是formdata,但是其实整个都当一个key了。

当然直接用json把数据post上去其实就没问题了,如果一定要postformdata的话,应该要自己拼出来或者用jquery的$.param之类的方法来做。

C++调用WCF

写的ServiceContract

一共有几种方式?

C++调用WCF

写的ServiceContract

一共有几种方式?我下面的调用方式虽然能访问但是不理想。

在创建C++工程时候选择

公共语言运行库支持(/clr)

可以添加WEB引用。

并且成功创建代理类。

也可以调用WCF提供的OperationContract具体方法。

但是有一个问题,由于以上操作选择了

公共语言运行库支持(/clr)

,这样会不会要求C++客户端程序强制安装.net

freamwork的托管运行环境。从而增加客户端的安装复杂性。

如果要求安装.net

freamwork的托管运行环境,那么有什么好的方法可以不选择

公共语言运行库支持(/clr)

。或者不安装.net

freamwork的托管运行环境,也可以使用WCF提供的

ServiceContract。

也就是C++调用WCF

写的ServiceContract

一共有几种方式?

小弟刚研究WCF不长时间,但是有WEBSERVICE基础(WEBSERVICE的安全也不会做),多谢各位前辈。

-----------------

大家有以下几种吧,

1.直接调用,把WCF服务暴露为Web服务,如果C++可以直接调用Web服务,那么也可以直接调WCF服务。

2.把WCF服务暴露为Rest

服务,C++如果可以调用普通的网页,通过Http标准操作,Get,Put,post等那么它也可以直接调用Rest

WCF服务。

3.另外就是把调用WCF服务的客户端包装成程序集,然后C++代码调用程序集里的C#代码。

前两种方式应该操作性更强吧。