WCF 4.0 REST Service JSON跨域调用
2012-08-21 09:17
363 查看
[ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] [JavascriptCallbackBehavior(UrlParameterName="callback")] public class Writing { [WebGet(UriTemplate="", ResponseFormat=WebMessageFormat.Json)] public List<Top> GetCollection() { WritingContext _context = new WritingContext(); return _context.Database .SqlQuery<Top>("SELECT TOP 15 WRITINGID Id, WRITING Title FROM YC_WRITING ORDER BY WRITINGID DESC") .ToList(); } }
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> <standardEndpoints> <webHttpEndpoint> <!-- Configure the WCF REST service base address via the global.asax.cs file and the default endpoint via the attributes on the <standardEndpoint> element below --> <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" crossDomainScriptAccessEnabled="true"/> </webHttpEndpoint> </standardEndpoints> </system.serviceModel>
真正实现夸域调用只需要两步:
类文件中添加[JavascriptCallbackBehavior(UrlParameterName="callback")]
配置文件的 standardEndpoint 添加 crossDomainScriptAccessEnabled="true"
最后需要注意的是WCF REST service 模板生成的配置文件automaticFormatSelectionEnabled属性默认是true,需要将其设置为false否则firefox里返回的将是xml格式。
3. 如果你的防火墙是打开的 ,那么关闭防火墙 或者把此站点的端口加入例外哦
4. Server Error in '/' Application.
Cross domain javascript callback is not supported in authenticated services.
解决:
<system.web> <!--加上 mode ="None"--> <authentication mode="None"/> </system.web>
但是我测试的结果是:
automaticFormatSelectionEnabled="true" 时
firefox chrome ie
Json->json Json->json Xml->Xml
Xml->Json Xml->json Json->页面错误
automaticFormatSelectionEnabled="false" 时
Json->错误 Json->错误 Json->错误
Xml->xml Xml->xml Xml->xml
在客户端,我们在一个Web页面中通过jQuery进行Ajax调用这个服务,并将得到的员工列表显示在一个表格中。出CSS之外的页面代码如下所示,需要注意的是在进行Ajax调用的使用将dataType选项设置成“jsonp”,而不是“json”。
相关文章推荐
- WCF 4.0 REST Service JSON跨域调用
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 使用WCF 4.0 构建 REST Service
- Entity Framework + WCF REST JSON Service
- Silerlight调用WCF、Web Service、Wcf Ria Service跨域的问题
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- jquery使用json格式 调用 restful wcf web service
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 调用WCF REST服务时,使用JSON
- jquery 跨域调用wcf 返回json 碰到的一些问题
- jquery使用json格式 调用 restful wcf web service
- WCF 构建REST Service 跨域访问解决方法
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 【转载】一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- Rest in WCF - WCF的Json跨域
- 跨域调用 WcfRest
- JQUERY 跨域调用WCF REST服务
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)