ASMX返回纯字符串

时间:2011-01-02 20:28:32

标签: c# asmx

我有一个ASP.NET Web服务(.asmx)。我的服务定义如下:

[System.Web.Services.WebService(Namespace = "http://tempuri.org/")]
[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)]
public class MyService : System.Web.Services.WebService
{
  [System.Web.Services.WebMethod]
  public string GetResult()
  {
    string result = "";

    int day = System.DateTime.UtcNow.Day;
    if ((day % 1) == 1)
      result = "odd";
    else
      result = "even";
    return result;
  }
}

目前,如果我调用此服务方法,我会得到以下结果:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">even</string>

我的问题是,我只需要返回字符串部分。我不想返回包装XML。我如何使用.asmx?

执行此操作

谢谢!

3 个答案:

答案 0 :(得分:4)

是否需要成为.asmx网络服务?我的意思是,通过排除SOAP信封,你实际上是在说“这不是一个SOAP Web服务”,所以为什么不采取进一步措施,使其成为常规的.aspx页而不是{{ 1}}网络服务。

作为一个页面,你要做的事情将是微不足道的。从页面中删除所有标记,使用.asmx相应地修改回复标题,Response.Headers输出原始文本,Response.Write()关闭回复。

答案 1 :(得分:2)

使用json

将所需的属性添加到您的网络服务和您的网络方法中,然后就可以得到您想要的内容。

Web服务属性:[ScriptService]

网络方法属性:[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

阅读示例Here

答案 2 :(得分:0)

为什么要删除XML部分?代理生成的代码需要通用格式,以便能够理解和读取正在返回的数据。剥离XML实质上会使客户端代理无法读取返回数据。