У меня есть WebMethod внутри .aspx:
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static XmlDocument GetSomeInformation()
{
XmlDocument Document = new XmlDocument()
// Fill the XmlDocument
return Document;
}
Он прекрасно работает, когда я вызываю его с помощью JQuery:
TryWebMethod = function()
{
var options =
{
type: "POST",
url: "MyAspxPage.aspx/GetSomeInformation",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
cache: false,
success: function (data, status, xhr)
{
alert(formatXml(xhr.responseText));
},
error: function (xhr, reason, text)
{
alert(
"ReadyState: " + xhr.readyState +
"\nStatus: " + xhr.status +
"\nResponseText: " + xhr.responseText +
"\nReason: " + reason
);
}
};
$.ajax(options);
}
Ну, я хочу сделать именно то, что JQueryделаю, но в c # ...
я использую это:
WebRequest MyWebRequest = HttpWebRequest.Create("http://localhost/MyAspxPage.aspx/GetSomeInformation");
MyWebRequest.Method = "POST";
MyWebRequest.ContentType = "application/json; charset=utf-8";
MyWebRequest.Headers.Add(HttpRequestHeader.Pragma.ToString(), "no-cache");
string Parameters = "{}"; // In case of needed is "{\"ParamName\",\"Value\"}"...Note the \"
byte[] ParametersBytes = Encoding.ASCII.GetBytes(Parameters);
using (Stream MyRequestStream = MyWebRequest.GetRequestStream())
MyRequestStream.Write(ParametersBytes, 0, ParametersBytes.Length);
string Result = "";
using (HttpWebResponse MyHttpWebResponse = (HttpWebResponse)MyWebRequest.GetResponse())
using (StreamReader MyStreamReader = new StreamReader(MyHttpWebResponse.GetResponseStream()))
Result = MyStreamReader.ReadToEnd();
MessageBox.Show(Result);
Эта работа, но я хотел бы знать, если есть лучший способ, или как я могу сделатьзапрос асинхронный.Спасибо.