我有一个非常轻巧的REST API,该API可以验证用户身份。我想以JSON对象的形式返回验证,但是可以,如果缺少参数,我想用一些信息消除错误。这是我的控制器
public class GraphAccessController : ApiController
{
private UserValidation _userValidation;
private UserPermissions _userPermissions;
string _application;
public GraphAccessController()
{
_userValidation = new UserValidation();
_userPermissions = new UserPermissions();
}
public object GetUserValidation(string application)
{
if (string.IsNullOrEmpty(application))
{
return StatusCode(HttpStatusCode.MethodNotAllowed);
//return new HttpResponseException(HttpStatusCode.MethodNotAllowed);
}
try
{
_application = application;
ValidateUser(WindowsIdentity.GetCurrent(), application);
return _userValidation;
}
catch (HttpResponseException e)
{
string error = e.ToString();
return StatusCode(HttpStatusCode.InternalServerError);
}
}....(other private calls for validation)
{
传入“应用程序”后,我得到了一个不错的JSON对象。但是,当我尝试检查IsNullOrEmpty时尝试向用户返回错误时,如果我只是使用PostMan进行调用:
return StatusCode(HttpStatusCode.MethodNotAllowed)
状态设置为“不允许的405方法”,但我想传递一些文本以指示失败的原因。所以我尝试了:
throw new HttpResponseException(HttpStatusCode.MethodNotAllowed);
,这只是在我的控件中停止执行。所以我做了一个返回而不是抛出,我得到的状态是200(表明一切都很好),但是JSON标头数据是
{ “响应”:{ “版本”:{ “ _Major”:1 “ _Minor”:1 “ _Build”:-1, “ _Revision”:-1 }, “内容”:null, “状态代码”:405, “ ReasonPhrase”:“不允许使用方法”, “标题”:[], “ RequestMessage”:null, “ IsSuccessStatusCode”:否 }, “消息”:“ HTTP请求的处理导致异常。请查看“响应”返回的HTTP响应 有关详细信息,请参见此异常的属性。”, “数据”:{}, “ InnerException”:null, “ TargetSite”:null, “ StackTrace”:null, “ HelpLink”:null, “来源”:null, “ HResult”:-2146233088}
从捕获代码中可以看到,我也在尝试做相同类型的事情。您如何将带有相应信息文本的StatusCode返回给调用方,以便他们可以检查状态,如果不是200,请检查正文中是否有错误文本?
谢谢
答案 0 :(得分:1)
尝试返回带有所需HttpStatusCode的内容响应,如下所示:
Aero