|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。今天,博客园首页增添了Digg功效。在该功效中我们入手下手实验利用jQuery间接挪用WCF。之前我们接纳的计划是jQuery挪用WebService,然后WebService再挪用服务层。如许挪用次要是由于之前必要挪用分歧域名下的WCF服务,由于跨域挪用的成绩,就要经由过程WebService直达一下。而此次Digg功效挪用的是统一个使用程序下的WCF,用jQuery间接挪用WCF是更好的选择。在实验这类体例的过程当中碰到的一些成绩和一些必要注重的中央必要纪录一下,以是就写了这篇漫笔。
xland的jQuery调WCF给了我们很年夜匡助,在这里感激xland!在探究手艺的过程当中,将本人办理成绩的履历纪录上去,不但能够备忘、总结,并且能够匡助碰到一样成绩的伴侣,这也是写博客的一种兴趣吧。
进进正题,jQuery挪用WCF必要注重的一些成绩:
1.WCF的设置(WCF服务宿主于IIS7)
1)WCF服务相干设置:
在必要挪用的接口办法(OperationContract)上加上属性[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest)],好比:
[ServiceContract]
publicinterfaceIDiggService
{
[OperationContract]
[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest)]
stringGetDiggCountList(stringentryIdList);
}
给服务虚现类加上属性:
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
publicclassDiggService:IDiggService
{
}
不然挪用时会呈现毛病:“IIS7.0DetailedError-500.0-System.ServiceModel.ServiceActivationException”。
2)Web.config中的WCF相干设置:
<system.serviceModel>
<services>
<servicename="DiggService">
<endpointaddress=""binding="webHttpBinding"contract="IDiggService"behaviorConfiguration="DiggServiceBehavior"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behaviorname="DiggServiceBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
必要注重两个中央的设置:
a)binding="webHttpBinding",入手下手设置为binding="basicHttpBinding",呈现毛病提醒:
TheendpointatDiggService.svcdoesnothaveaBindingwiththeNoneMessageVersion.System.ServiceModel.Description.WebScriptEnablingBehaviorisonlyintendedforusewithWebHttpBindingorsimilarbindings.
b)<enableWebScript/>,启用这个设置才干让WCF撑持Ajax挪用,不然挪用时WCF会前往如许的毛病:
ThemessagewithToDiggService.svc/GetDiggCountListcannotbeprocessedatthereceiver,duetoanAddressFiltermismatchattheEndpointDispatcher.CheckthatthesenderandreceiversEndpointAddressesagree.
2、客户端jQuery挪用注重
入手下手依照挪用WebServcie的体例挪用:
$.ajax({
url:/wcf/DiggService.svc/GetDiggCountList,
data:{"entryIdList":"+entryIdList+"},
type:post,
dataType:json,
contentType:application/json;charset=utf8,
success:function(data){
if(data.d){
}
}
},
error:function(xhr){
alert(xhr.responseText);
}
});
在FireFox中能乐成挪用,但在IE8和GoogleChrome中,挪用后前往的倒是IIS7的毛病信息:IIS7.0DetailedError-400.0-BadRequest。
厥后将contentType:application/json;charset=utf8改成contentType:text/json成绩就办理了。
jQuery挪用WebService与WCF另有一个分歧的地方在参数格局的处置上:
好比下面代码中的data:{"entryIdList":"+entryIdList+"},假如将参数名的双引号往失落,即data:{entryIdList:"+entryIdList+"},能够一般挪用WebService,挪用WCF会呈现Json反序列化的非常。
3、其他必要注重的中央
学习asp.net两个月有余了,除了对html、web控件比较熟悉(应该是说都能理解和接受)之外,竟不知道自己还会什么。看了两本书:《精通asp.net网络编程》(人民邮电出版社)、《asp.net实用案例教程》(清华大学出版社)。 |
|