C# 返回错误而不是响应odata.net
我刚接触Odata,一直在使用.net(c#)和本视频编写api 问题是我有这样的构造函数方法:C# 返回错误而不是响应odata.net,c#,.net,odata,C#,.net,Odata,我刚接触Odata,一直在使用.net(c#)和本视频编写api 问题是我有这样的构造函数方法: [EnableQuery] public ObjectResult<InclusionWorkBookResult> GetInclusionWorkBooks() { string query = this.Url.Request.RequestUri.Query; if (string.IsNullOrEmpty(que
[EnableQuery]
public ObjectResult<InclusionWorkBookResult> GetInclusionWorkBooks()
{
string query = this.Url.Request.RequestUri.Query;
if (string.IsNullOrEmpty(query))
{
return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "");
}
return db.GetInclusionWorkBookData();
}
[启用查询]
public ObjectResult GetInclusion工作簿()
{
字符串查询=this.Url.Request.RequestUri.query;
if(string.IsNullOrEmpty(查询))
{
返回请求.CreateErrorResponse(HttpStatusCode.Forbidden,“”);
}
返回db.GetInclusionWorkBookData();
}
正如您可以看到的那样,如果用户没有指定查询,它将返回一个禁止的错误代码(这将迫使他们进行筛选,因为完整的数据集有数百万行)。
但是,这不起作用,因为Request.createErrorResponse是HttpResponseMessage,get返回ObjectResult
我知道在查询odata时可能会出现一个禁止的错误(弄乱url查询)
我的问题是:
如何返回自定义错误消息而不弄乱GET的返回标题
提前谢谢。您可以返回IHttpActionResult,例如:
public IHttpActionResult GetInclusionWorkBooks()
{
string query = this.Url.Request.RequestUri.Query;
if (string.IsNullOrEmpty(query))
{
return BadRequest();
}
return Ok(db.GetInclusionWorkBookData());
}
如果提供了查询,结果将是200(确定)和请求的数据,否则将是400个错误请求Hi jps,感谢您的快速回答。我已经想到了这一点,但它不起作用,因为Odata请求需要ObjectResult。因此,当我将其更改为返回IhttpActionResult时,只要我能在代码中跟踪它,一切都正常(即使返回运行),但在响应中,我得到了406(不可接受)消息。我已经确保更改了WebApi.Config.cs中的类型:“builder.EntitySet(“InclusionWorkBooks”);”这是因为odata函数实际上查询get方法并将响应作为Json发送回。嗨,WepApi.Config中的更改实际上是错误的。不要将其更改为IHttpActionResult。您的实体集仍然是InclusionWorkBookResult。您只需要更改我在回答中提到的Get方法。如果您尝试使用fiddler之类的工具,您将看到您的数据是JSON格式的,状态为OK,或者是空的正文和状态为BadRequest。这就是解决方案,谢谢