我是发布在本机的IIS中,故选择Web Deply发布方法,同时,这里建议服务器和站点名称设置成:localhost和default web site/XXX,这里XXX可以由你自己定义个服务站点的名字(实际就是IIS默认站点的虚拟目录名称),这样,你的开发伙伴获取到该项目源码后,能发布到完全相同的环境中,避免由于环境的差异延伸出一系列问题。
设置完毕后,点击“验证连接”,出现绿色的钩钩,说明设置正确,点击“发布”即可。
第七步,实测
1、现在可以通过浏览器访问来确认服务器端是否部署成功,出现如下界面说明部署成功。

2、通过浏览器访问测试网页来检查功能是否OK。
其次,下面说说我在搭建过程中出现的各种问题。
1、网页通过Ajax调用服务的CreatePerson方法时把方法类型写错了,POST写成了GET,结果系统报:405 (Method Not Allowed)。另外,根据微软官网中描述,若通过soap访问一个WCF WEB HTTP应用程序(使用 WebHttpBinding 和 WebHttpBehavior 的服务)也会出现405错误。
2、web.config文件中endpoint节点的contract属性配置错误,没有指向WCF.IPersonService,网页执行时报:500 (System.ServiceModel.ServiceActivationException);在用检验服务器端部署结果时,报:在服务“PersonService”实现的协定列表中找不到协定名称“VME.Contract.PersonService”。
这里需要说明的是若你的服务不是基于接口的,则endpoint的contract直接指向服务类即可。
3、在使用jQuery的ajax并以POST方式传值给服务器时,由于格式错误,报如下错误:500 (Internal Server Error),详细信息为:格式化程序尝试对消息进行反序列化时引发异常。正确的有两种处理方式:
1)以json格式对象的方式传递,例如:
{"loginName":"name","password":"pwd"}
这里要强调的是键值对中,键必须加双引号,且大小写必须与服务方法中的形参定义完全一样。
2)以json格式对象字符串的形式传递,具体如下:
POST方式传值
A)传入非对象参数:
{"loginName":"name","password":"pwd"}'
这里要强调的是键值对中,键必须加双引号,且大小写必须与服务方法中的形参定义完全一样,值应按如下规则设置:字符串加双引号。
B)传入对象参数:
var person = {};
person.LoginName = $("#loginName").val();
person.Password = $("#password").val();
var jsonPerson = '{"person":' + $.toJSON(person) + '}';
这里要强调的是对象属性名称的大小写必须与数据类的属性定义完全一致。
GET方式传值
A)传入非对象参数:
'loginname="name"'
B)传入对象参数:
var person = {};
person.LoginName = $("#loginName").val();
person.Password = $("#password").val();
var jsonPerson = 'person=' + $.toJSON(person);
最后,说说WCF调试。
1、建议首先通过访问的形式确认服务器端部署成功,再进行客户端和服务器端联调。
2、若需要代码从客户端运行开始直到服务器端运行进行联调,则必须使用同步调用,因此,使用jQuery的ajax时,必须将async设置为false。
相关阅读 :
jQuery Ajax调用WCF服务详细教程
jQuery ajax调用WCF服务实例
前台JS(jquery ajax)调用后台方法实现无刷新级联菜单示例
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
jQuery Ajax中的事件详细介绍
jquery ajax 调用失败的原因示例介绍
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
jQuery AJAX 调用WebService实现代码
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
jQuery Ajax 全局调用封装实例代码详解
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
使用jQuery处理AJAX请求的基础学习教程
相关文章
精彩导读
热门资讯
关注我们