【发布时间】:2020-04-14 17:14:59
【问题描述】:
[System.Web.Http.HttpGet]
[System.Web.Http.Route("acDetails")]
[ResponseType(typeof(List<AutoCompleteCombine>))]
public IHttpActionResult acDetails(string Text)
{
var db = new ModelName();
var DetailsList = (IList)null;
try
{
var DetailsIListXX = (from a in db.Tablename
where a.ColumnName.StartsWith(Text)
select a.ColumnName).Distinct().ToList();
DetailsList = DetailsIListXX.Select(x => new { ColumnNameChange= x }).ToArray();
}
catch (Exception ex)
{
}
return Ok(DetailsList);
}
//properties
public class AutoCompleteCombine
{
public string ColumnNameChange { get; set; }
}
以上代码适用于“application/json”和“text/json”响应类型,并在 swagger 中为 application/xml 和 text/xml 响应获取错误。
异常消息:“ObjectContent`1”类型无法序列化内容类型“application/xml;”的响应正文;字符集=utf-8'
使用 AutoCompleteCombine 类属性将响应转换为 List 将修复我认为的错误。
在此对象类型案例中将 ilist 转换为 List 的任何建议
谢谢
【问题讨论】:
-
响应是否给出 200 OK?如果您得到 200,则响应的数据不是 xml,或者您必须删除一个标头。 XML 应该以 开头。如果您没有获得 200 OK,则说明请求有问题。发布错误。
-
200 ok 对于 application/json 和 text/json 响应类型....和错误 application/xml 和 text/xml 响应....以及 XML 响应类型的异常消息:' ObjectContent`1' 类型无法序列化内容类型 'application/xml; 的响应正文; charset=utf-8'-@jdwengspan>
-
忽略 Xml 错误,直到您在响应中获得有效的 200 OK。首先,我们必须了解 XML 请求失败的原因。您有工作 XML 请求的示例吗?你得到什么错误而不是 200 OK。是 500 还是别的什么。
标签: c# list asp.net-web-api swagger application-xml