问题
I have an ASP.NET web service (.asmx). My service is defined like the following:
[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;
}
}
Currently, if I call this service method, I get the following result:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">even</string>
My issue is, I need to return just the string part. I do NOT want to return the wrapping XML. How do I do this with an .asmx?
Thanks!
回答1:
Does it need to be an .asmx
web service for this? I mean, by excluding the SOAP envelope you're essentially saying "this is not a SOAP web service" as it is, so why not take it a step further and make it a regular .aspx
page instead of an .asmx
web service.
As a page, what you're trying to do would be trivial. Remove all mark-up from the page, use Response.Headers
to edit the response headers accordingly, Response.Write()
to output your raw text, and Response.End()
to close the response.
回答2:
Use json
add the required attribute to your web service and your web method and you get what you want.
Web Service Attribute:[ScriptService]
Web Method Attribute:[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
Read a sample Here
回答3:
Why do you want to get rid of the XML part? The code which is generated by the proxy needs a common format so it can understand and read the data that is being returned. Stripping the XML essentially makes your return data unreadable by the client proxy.
来源:https://stackoverflow.com/questions/4580372/asmx-returning-a-pure-string