Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PageMethods可以返回XML吗?_C#_Asp.net - Fatal编程技术网

C# PageMethods可以返回XML吗?

C# PageMethods可以返回XML吗?,c#,asp.net,C#,Asp.net,我在玩一些ASP.NET PageMethods,我尝试使用以下方法简单地返回XML: [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Xml)] public static string GetIPLocation(string ip) { var doc = XDocument.Load(HttpContext.Current.Server.MapPath("relative xml path")); var

我在玩一些ASP.NET PageMethods,我尝试使用以下方法简单地返回XML:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static string GetIPLocation(string ip)
{
    var doc = XDocument.Load(HttpContext.Current.Server.MapPath("relative xml path"));
    var s = doc.ToString();

    return s;
}
完全相同的代码实际上适用于ASMX服务(尽管删除了
static
修饰符)

但事实证明,在使用PageMethods时,我无法获取XML,相反,我接收的是页面的HTML代码。

以下是我的AJAX代码:

$.ajax({
    url: "<%: this.ResolveClientUrl("~/relative path/GetIPLocation") %>",
    type: "POST",
    contentType: "application/xml; charset=utf-8;",
    dataType: "xml",
    data: "{ip:'"+$target.val()+"'}",
    async: true,
    cache: false,
    success: function (msg) {
        console.log("MSG: %o", msg);
        viewModel.ip1(msg.d.IP);
    },
    error: function (XHResponse, errorMessage, errorCode) {
        console.log("AJAX Error: %o", XHResponse);
    }
});


由于您似乎正在发送JSON格式的数据,因此请尝试在
contentType
中使用
application/JSON
而不是
application/xml
进行jQuery调用

  • contentType
    描述了您发送的信息的格式 用你的帖子
  • dataType
    描述了您在响应中所期望的内容

不匹配可能会产生奇怪的结果。

您是否尝试过简单地返回XDocument,而不是先将其更改为字符串?我刚刚返回了,并且得到了相同的结果,我更新了我的问题如果在jQuery调用的contentType中使用application/json而不是application/xml,您会得到什么?ContentType描述您随帖子发送的信息的格式。数据类型描述您在响应中所期望的内容。不匹配可能会产生奇怪的结果。您是否尝试过设置ResponseFormat=ResponseFormat.Json?@JamieSee您是对的,将contentType更改为Json有效(因为我在请求中发送Json)。现在我发送json并接收XML。这就是我想要的实验。你能把你的回复贴出来作为回答,把它标记为接受吗
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static XDocument(GetIPLocation(string ip)
{
     return XDocument.Load(HttpContext.Current.Server.MapPath("relative xml path"));
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static XmlDocument(GetIPLocation(string ip)
{
    var x = new XmlDocument();

    x.LoadXml(HttpContext.Current.Server.MapPath("relative xml path"));

    return x;
}