C#开发ASMX WebService如何仅返回纯数值而非XML包装内容?
让ASMX WebService直接返回纯数值而非XML包装结果
当然可以直接返回目标的两个数值,不用再手动处理XML。核心思路是跳过ASMX默认的XML序列化流程,直接通过HttpContext输出纯文本内容。
实现步骤:
- 将WebMethod的返回类型改为
void(不再依赖默认的返回值序列化) - 利用
HttpContext.Current.Response直接输出你需要的数值格式 - 设置响应的内容类型为纯文本,并结束响应以避免默认的XML输出
代码示例:
using System.Web; using System.Web.Services; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class MyWebService : WebService { [WebMethod] public void GetCoordinates(string requestParam) { // 替换成你的坐标计算逻辑 int targetX = 150; int targetY = 300; // 设置响应为纯文本格式 HttpContext.Current.Response.ContentType = "text/plain"; // 输出数值,用逗号分隔(可按需改成空格、竖线等分隔符) HttpContext.Current.Response.Write($"{targetX},{targetY}"); // 结束响应,阻止ASMX输出默认的XML包装 HttpContext.Current.Response.End(); } }
调用这个方法时,浏览器会直接收到150,300这样的纯文本结果,无需再解析XML结构。
注意:这种方式仅适用于HTTP GET/POST直接调用(比如你用浏览器访问的URL方式),如果需要兼容SOAP客户端调用,建议单独写一个方法或者在方法内判断请求类型做分支处理。
内容的提问来源于stack exchange,提问作者gpol
相关产品推荐
相关产品推荐

