问题概述

通过Web Service发布服务供客户端调用是一种非常简单、方便、快速的手段,并且服务发布后会有一个服务说明页面,直观明了,如图:

一般情况下,在web页面中的JavaScript中调用Web Service时,由于上述服务返回的数据是xml格式的,虽然js也能处理
xml,但就是用着不太爽,如果能直接让webService返回json数据,那就再好不过了。
此外,JavaScript访问webService时通常还会遇到跨域的问题,之前有提到过可以使用Jsonp处理,但也是比较麻烦的,需要服务端和客户端同时做好处理。

WebService返回json数据

在Visual Studio中创建WebService的过程此处不再赘述,可参考:http://blog.csdn.net/yexuanbaby/article/details/9029605

默认WebService的方法定义我们是这样写的:

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

这种写法无论我们的返回值是否是json字符串,最终都会被xml包一层,不能直接作为json数据处理的,将返  回类型改为void,return部分改为如下部分:

Context.Response.Charset = "UTF-8";

Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");

Context.Response.Write(jsonStr);

Context.Response.End();

其中jsonStr是json字符串,为string类型的数据,这样返回的数据就不再是xml格式的,直接是json数据了。

Tips:关于c#如何将对象转为json字符串,可以使用JavaScriptSerializer 类。

服务端配置搞定跨域问题

关于如何使用Jsonp处理跨域问题,参考:http://www.cnblogs.com/lightmao/p/6083996.html

其实我们在web应用的配置文件web.config中添加以下节点就可以了,可以在Access-Control-Allow-Origin处设置允许跨域访问的域名,*表示接受所有的跨域请求。

<system.webServer>

<modules runAllManagedModulesForAllRequests="true"/>

<httpProtocol>

<customHeaders>

<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>

<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>

<add name="Access-Control-Allow-Origin" value="*" />

</customHeaders>

</httpProtocol>

</system.webServer>

【C#】WebService接受跨域请求及返回json数据的更多相关文章

  1. AJAX 跨域请求 - JSONP获取JSON数据

    Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...

  2. 【转】AJAX 跨域请求 - JSONP获取JSON数据

    来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...

  3. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  4. Query通过Ajax向PHP服务端发送请求并返回JSON数据

    Query通过Ajax向PHP服务端发送请求并返回JSON数据 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuer ...

  5. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

        webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...

  6. jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    SON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用.请接着往下看教 ...

  7. MOOC(2)-Django开发get、post请求,返回json数据

    1.对get请求直接返回参数 如果请求多个参数,也只能返回一个参数,这里只返回了username参数 如果想要返回多个参数值,可以返回json格式数据 2.对get请求返回json数据 # views ...

  8. 跨域请求获取Solr json检索结果并高亮显示

    Solr提供了json格式的检索结果,然而在跨域的情况下如何调用呢?我们可以利用jquery提供的jsonp的方式获取Solr检索结果. <script type="text/java ...

  9. Jquery通过ajax请求NodeJS返回json数据

    最近看了NodeJS相关的,在网上查了下结合AJAX的应用,感觉应用前景还是不错的.为什么用这个组合呢? 1.NodeJS不需要安装,拷贝过去就可以使用,而环境变量可以只配置在当前cmd窗口,运行方便 ...

随机推荐

  1. 如何控制excel单元格录入相同内容的次数?

    我们知道如果要用Excel制作让人规范填写的模板,数据有效性,Excel2013版本及以上叫数据验证是必学的技能,正好这个案例可以讲讲数据有效性的一种“高级”设置方法. 加入我们需要实现下面的要求,价 ...

  2. 在android项目中使用FontAwesome字体

    在android项目中使用FontAweSome图标集,可以方便的适配各种屏幕分辨率,不必在各种不同分辨率文件夹中新建资源文件.使用字体是一种很巧妙的方法,把图像以字体的方式呈现,这样以前设置为and ...

  3. 【环境安装】Docker安装

    [环境安装]Docker安装 CentoOS-7 安装步骤: 1.卸载已经安装的Docker sudo yum remove docker \ docker-client \ docker-clien ...

  4. Linux 虚拟机详细安装MySQL

    准备工作 下载MySQL 去官网下载MySQL:点我直达 百度云盘地址:链接: https://pan.baidu.com/s/1qBN4r6t8gvq-I4CFfQQ-EA 密码: hei3 检查L ...

  5. Mysql表结构转成Oracle

    Navicat数据库连接工具

  6. 数据库事务(1)----- JDBC事务与JTA事务

    数据库事务(一)- JDBC事务与JTA事务 本文主要对JDBC事务与JTA事务做一个简单介绍. 1. 数据库事务概念 一个数据库事务通常包含对数据库进行读或写的一个操作序列.它的存在包含有以下两个目 ...

  7. Nginx负载均衡的详细配置 + Keepalived使用

    1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器 ...

  8. 06.DBUnit实际运用

    在上面的代码中 package com.fjnu.service; import java.io.FileWriter; import java.sql.SQLException; import st ...

  9. 操作系统识别-python、nmap

    识别操作系统主要是用于操作系统漏洞的利用.不管是windows还是linux系统,在安装完毕后都会默认启动一些服务,开启一些端口. 识别目标主机的系统最简单的方法就是发送ping包,windows起始 ...

  10. vue cli3项目中使用qrcodejs2生成二维码

    组件的形式创建 1.下载依赖 npm install qrcodejs2 2.创建一个.vue的组件放置代码(我创建的是qrcodejs2.vue) //template中的代码 <templa ...