asp.net webapi / jquery:加载xml流

时间:2013-07-16 15:42:38

标签: jquery xml asp.net-web-api

我有一个ASP.NET WebAPI方法,它返回一个包含有效XML文档的字符串:

public class MessageController : ApiController
{
    private readonly MyContextProvider _contextProvider = new MyContextProvider();

    [HttpGet]
    public string Message()
    {
        Message m =  _contextProvider.Context.Messages.First();
        return m.XMLFile;
    }
}

我使用jQuery从客户端调用此方法:

$.ajax('http://localhost:16361/service/api/message/message/', {
contentType: 'text/xml',
type: 'GET'
}).done(function (e) {  });

' E'包含XML字符串,但这不是我想要的。我想让浏览器处理响应并显示其通常的对话框以保存或打开XML。显然我在这里遗漏了一些东西,但我不确定该怎么办......

1 个答案:

答案 0 :(得分:1)

看一下这个问题here

您可以通过设置邮件内容的内容配置来在WebApi中实现此目的:

[HttpGet]
public HttpResponseMessage Message()
{
    Message m = _contextProvider.Context.Messages.First();
    var message =  Request.CreateResponse(HttpStatusCode.OK, m);
    message.Content.Headers.Add("Content-Disposition","attachment; filename=\"some.xml\"");
    return message;
}

[HttpGet]
public HttpResponseMessage Message()
{
    Message m = _contextProvider.Context.Messages.First();
    var message = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new StringContent(m, Encoding.UTF8, "application/xml")
        };
    message.Content.Headers.Add("Content-Disposition","attachment; filename=\"some.xml\"");
    return message;
}