.aspx 内に WebMethod があります。
[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);
これは機能しますが、より良い方法があるかどうか、またはリクエストを非同期にする方法を知りたいです。ありがとう。