如何从角度中的服务器中获取错误消息?

时间:2016-09-27 08:21:41

标签: c# angularjs exception-handling asp.net-web-api2

我有一个角度应用程序,它向服务器发送一个登录请求并收回我从服务器抛出的错误,以防用户名或密码无效或不正确。 无论如何,我在$ http服务上有一个函数来获取错误消息,但由于某种原因,错误消息来自一长串HTML标记,而我抛出的异常就在HTML内部。我希望能够在没有自定义或您称之为服务器或浏览器的任何内容的情况下获取原始邮件。

我很感激你的任何帮助。

更新

我的错误是我在服务器上抛出异常而不是返回错误。现在我修复了它,我正在返回错误,但我还要返回状态代码或一些正确的“http响应消息”。方法SetError不允许我这样做。还有其他办法吗?

以下是我的方法:

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
        using (AuthRepository _repo = new AuthRepository())
        {
            bool user = _repo.Authenticate(context.UserName, context.Password);

            if (user == false)
            {
                context.SetError("invalid_grant", "The user name or password is incorrect.");
                return;
            }
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user"));

        context.Validated(identity);
    }

1 个答案:

答案 0 :(得分:0)

理论上你可以像这样使用$http

$http.post(url, payload, config)
    .then(function success(response) {
        // do successful stuff here  
    },
    function err(response) {
        // response.data - find error message here
        // response.status - find error code here 
        // treat error here
    });

有关此here的更多信息。

但是,对我来说,您可能遇到服务器端问题,关于您回复客户端的方式。也许某些代码会对你的问题造成麻烦。

LE:关于您的状态代码问题,请查看this stackoverflow问题,也许您可​​以弄清楚如何在代码库中应用它。

我可以看到您Response上应该有一个context属性,您可以在其上设置StatusCode。请确保您阅读了那里的所有答案,因为我不是C#开发人员,我只是在google上查找。