我有一个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?
执行此操作谢谢!
答案 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实质上会使客户端代理无法读取返回数据。