当前位置: 首页 > 面试题库 >

您如何将状态401从WebAPI返回到AngularJS并包含自定义消息?

唐元凯
2023-03-14
问题内容

在我的WebAPI类中,ApiController我进行了如下调用:

string myCustomMessage = .....;

throw new HttpResponseException(
    new HttpResponseMessage(HttpStatusCode.Unauthorized)
        { ReasonPhrase = myCustomMessage });

当我使用AngularJS
$resource服务进行调用时,我确实在status字段的promise的catch块中得到401响应。401匹配HttpStatusCode.Unauthorized,所以一切顺利。

但是,问题在于响应的数据字段为空(空)。我没有得到myCustomMessage返回。

现在,如果HttpResponseException我没有抛出异常,而只是抛出一条Exception带有消息的常规消息,那么该消息确实会使它向Angular倾斜。

我需要能够做到这两者:从服务器返回自定义消息,以及使返回的状态代码成为我想要的任何类型,在本例中为401。

有人知道如何进行这项工作吗?

[编辑] 解决方案:

 throw new HttpResponseException(
     Request.CreateErrorResponse(HttpStatusCode.Unauthorized, myCustomMessage));

问题答案:

尝试HttpResponseMessage像这样返回。

public HttpResponseMessage Get()
{
    return Request.CreateErrorResponse(
              HttpStatusCode.Unauthorized, "You are not authorized");
}

这应该产生这样的HTTP响应消息。

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Sat, 12 Apr 2014 07:12:54 GMT
Content-Length: 36

{"Message":"You are not authorized"}


 类似资料:
  • 在我的WebAPI类中,,我进行了如下调用: 当我使用AngularJS 服务调用时,我在promise的catch块的status字段中得到401响应。401匹配< code>HttpStatusCode。未授权,所以一切正常。 然而,问题是响应的数据字段是空的(null)。我没有得到返回的myCustomMessage。 现在,如果不是抛出一个< code > httpresponseeexc

  • 我正在处理WebAPI 2中的一个服务,endpoint当前返回一个<code>IHttpActionResult<code>。我想返回一个状态代码,但由于它不在枚举中,我不知道如何发送它,因为所有构造函数都需要一个参数 目前,我正在返回<code>BadResult(消息),但返回<code>422

  • 在Spring Boot控制器中,我使用检查用户是否登录(使用基本auth+)。 但是如果用户没有登录,即他们没有经过身份验证,控制器返回。 根据我对身份验证与授权的了解,用于身份验证,而用于授权。 根据我的理解,总是检查用户的授权(顾名思义),但是有什么方法可以根据我们传递给它的参数自定义它,即? 我知道还有另一种解决方案:在中使用基于URL的安全配置,但如果我不想这样做,该怎么办。 有什么想法

  • 像“addSomething()”这样的类也有方法。这个可以成功也可以不成功。因此,成功的状态可以用一个布尔返回值来显示。但是有时方法调用会因为几个原因而失败。“false”显示了这一点,但只是以一般方式显示。有时程序员想知道失败的原因。为此,提供一个自己的报告类来提供这样的功能有用吗? 然后,您可以决定是否要使用“wassucsuccess()”获取一般成功报告,或者是否还要使用“getMess

  • 我们正在运行一个基于Spring的项目,使用Cognito作为身份识别服务。 我们有一个项目要求为Cognito用户池中的用户定制验证电子邮件和邀请电子邮件。(有关AWS文件,请参见此处的

  • 我正试图将一个值从一个定制钩子(为服务器获取数据)保存到带有useState的功能组件状态,因为我以后需要更改这个值,更改后需要重新加载。因此,理想的行为是: 将状态变量设置为自定义挂钩中的值 我尝试的是: > 设置useState的初始值到我的钩子: