C# 在MVC3操作中使用Response.End

C# 在MVC3操作中使用Response.End,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我正在尝试做一些类似于MVC3站点中建议的事情。但是,我不确定我是否可以使用响应。以我的行动结束 我的问题是,如果HttpContext.User==null,如何从操作返回401状态代码 public ActionResult WinUserLogOn(string returnUrl) { var userName = string.Empty; if (HttpContext.User == null) { //This will

我正在尝试做一些类似于MVC3站点中建议的事情。但是,我不确定我是否可以使用响应。以我的行动结束

我的问题是,如果HttpContext.User==null,如何从操作返回401状态代码

public ActionResult WinUserLogOn(string returnUrl) {
        var userName = string.Empty;

        if (HttpContext.User == null) {
            //This will force the client's browser to provide credentials
            Response.StatusCode = 401;
            Response.StatusDescription = "Unauthorized";
            Response.End();
            return View("LogOn"); //<== ????
        }
        else {
           //Attempt to Log this user against Forms Authentication
        }
public ActionResult WinUserLogOn(字符串返回URL){
var userName=string.Empty;
if(HttpContext.User==null){
//这将强制客户端浏览器提供凭据
Response.StatusCode=401;
Response.StatusDescription=“未经授权”;
Response.End();

返回视图(“登录”);//这应该满足您的要求:

return new HttpUnauthorizedResult();

它会将HTTP 401返回到浏览器。

这应该满足您的要求:

return new HttpUnauthorizedResult();

哪个将向浏览器返回HTTP 401..

您发布的代码似乎有什么问题?我假设返回视图时,我的响应代码和描述将被覆盖。虽然m.edmondson的回答正确,
response.End()
将清除所有内容并终止线程,因此在
响应后执行什么操作并不重要。结束
,除非您将其传递到
false
。但这并不像提供的答案那样清楚。您发布的代码似乎有什么问题?我假设当V返回视图。虽然m.edmondson的回答是正确的,
Response.End()
将清除所有内容并终止线程,因此在
响应之后做什么并不重要。结束
,除非您将其传递到
false
。但这并不像提供的答案那样清楚。虽然这样做有效,但我无法按照文章建议的方式工作。基本上,所发生的一切都是站点重定向到日志当用户未经身份验证时,应在页面上显示。我猜该解决方案不适用于MVC。虽然这样做有效,但我无法按照文章建议的方式运行。基本上,发生的只是当用户未经身份验证时,站点重定向到登录页面。我猜该解决方案不适用于MVC。