0

我有一个 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。显然我在这里遗漏了一些东西,但我不知道该怎么做......

4

1 回答 1

1

在这里看看这个问题:

您可以通过设置消息内容的 content-disposition 在 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;
}
于 2013-07-17T07:59:53.053 回答