gpt4 book ai didi

asp.net-mvc-4 - MVC 网络 API。想要根据当前格式化程序获取 HttpResponseMessage 的格式

转载 作者:行者123 更新时间:2023-12-02 07:41:06 24 4
gpt4 key购买 nike

下面是我的MVC Web Api RC的Get方法。

public Employee Get(int id)
{
Employee emp= null;

//try getting the Employee with given id, if not found, gracefully return error message with notfound status
if (!_repository.TryGet(id, out emp))
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)
{
Content = new StringContent("Sorry! no Employee found with id " + id),
ReasonPhrase = "Error"
});

return emp;
}

这里的问题是,无论何时抛出错误“抱歉!没有找到具有 id 的员工”,都只是平面文本格式。但是我想根据我当前的格式化程序设置格式。默认情况下,我在我的 global.asax 中设置了 XML 格式化程序。所以错误应该以 XML 格式显示。像这样的东西:

<error>
<error>Sorry! no Employee found with id </error>
</error>

与 Json 格式化程序类似。应该是:

[{"errror","Sorry! no Employee found with id"}]

提前致谢

最佳答案

您正在返回一个 StringContent。这意味着内容将按原样返回,您可以自行设置格式。

我个人会定义一个模型:

public class Error
{
public string Message { get; set; }
}

然后:

if (!_repository.TryGet(id, out emp))
{
var response = Request.CreateResponse(
HttpStatusCode.NotFound,
new Error { Message = "Sorry! no Employee found with id " + id }
);
throw new HttpResponseException(response);
}

启用 XML Accept 的客户端将看到:

<Error xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/AppName.Models">
<Message>Sorry! no Employee found with id 78</Message>
</Error>

启用 JSON Accept 的客户端会看到:

{"Message":"Sorry! no Employee found with id 78"}

关于asp.net-mvc-4 - MVC 网络 API。想要根据当前格式化程序获取 HttpResponseMessage 的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com