Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中抛出未格式化的401_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 在MVC中抛出未格式化的401

C# 在MVC中抛出未格式化的401,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,目前我有以下代码: if (!checkAuthCode(LoginAuthenticatieCode)) { throw new HttpException(401, "Auth Failed"); } 此代码检查用户是否经过身份验证,如果没有,则抛出401异常。唯一的问题是,在这个过程中,这个401被打包成一个漂亮的500错误,说 “消息”:“发生错误。”, “例外消息”:“身份验证失败

目前我有以下代码:

            if (!checkAuthCode(LoginAuthenticatieCode))
            {
                throw new HttpException(401, "Auth Failed");
            }
此代码检查用户是否经过身份验证,如果没有,则抛出401异常。唯一的问题是,在这个过程中,这个401被打包成一个漂亮的500错误,说

“消息”:“发生错误。”,
“例外消息”:“身份验证失败”,
“异常类型”:“System.Web.HttpException”,
“StackTrace”:“bij WebApplication1.Controllers.loginController.checkAuthCodeOrThrow(字符串 Blabla中的登录认证代码)


有没有办法防止ASP.NET(或MVC,我不知道这两个版本中的哪一个应该负责)将我的错误包装成这种“很好”的人类可读形式?

对于ASP.NET MVC,请使用
HttpException(401,“一些消息…”)


对于ASP.NET WebAPI,使用
HttpResponseException(HttpStatusCode.Unauthorized)
对于ASP.NET MVC,使用
HttpException(401,“某些消息…”)


对于ASP.NET WebAPI,请使用
HttpResponseException(HttpStatusCode.Unauthorized)

看起来这是一个WebAPI控制器,您正在引发一个MVC异常。此差异将与MVC 6/vNext统一

目前,MVC和WebAPI使用不同的程序集和名称空间。WebAPI不会将您抛出的
System.Web.HttpException
识别为HTTP异常,因此它认为您的应用程序抛出了随机异常,并将其格式化为JSON格式的内部服务器错误


因此,对于WebAPI,抛出一个新的HttpResponseException(HttpStatusCode.Unauthorized)。这将生成一个HTTP 401。

看起来这是一个WebAPI控制器,您正在抛出一个MVC异常。这个差异将与MVC 6/vNext统一

目前,MVC和WebAPI使用不同的程序集和名称空间。WebAPI不会将您抛出的
System.Web.HttpException
识别为HTTP异常,因此它认为您的应用程序抛出了随机异常,并将其格式化为JSON格式的内部服务器错误


因此,对于WebAPI,抛出一个
新的HttpResponseException(HttpStatusCode.Unauthorized)
。这将生成一个HTTP 401。

@Neel-Yup,我的坏…更正了它,谢谢你指出它。你确定这是MVC而不是WebAPI控制器吗?@Neel-Yup,我的坏…更正了它,谢谢你指出它。你确定这是MVC而不是WebAPI控制器吗?我认为正确的方法是返回一个错误结果,比如?Assuming OP使用的是MVC而不是Web API。我确实是从一个WebAPI控制器发出这个消息的。我对整个MVC和ASP.NET以及所有东西都相当陌生,所以我想我忘了在这里包含一些重要信息。谢谢你的回答,它现在可以按我的要求工作了。@Panagiotis OP使用的是WebAPI。:P我想使用一个类来响应HTTP code有点傻,通常在MVC中使用。虽然如果你使用模型类型的动作方法而不是
ActionResult
,你就不能这样做。我认为正确的方法是返回一个错误结果,比如?假设OP使用的是MVC而不是Web API,我确实是从一个WebAPI控制器中抛出这个。我对整个MVC和ASP.NET和所有内容,所以我想我忘了在这里包含一些重要信息。谢谢你的回答,它现在可以按我的要求工作了。@Panagiotis OP正在使用WebAPI。:P我认为在每个HTTP响应代码中使用一个类有点傻,通常在MVC中使用。虽然如果你使用的是模型类型的操作方法而不是<代码,你就不能这样做>操作结果。