Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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# 使用ReturnURL登录MVC失败_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 使用ReturnURL登录MVC失败

C# 使用ReturnURL登录MVC失败,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我的目标是从我的登录控制器返回401错误。我用内置的.Net成员资格提供商启动了一个股票MVC站点。当前发生的情况是,当我从控制器返回401时,我得到一个http://xxxxx/Account/Login?ReturnURL=XXXX我不希望重定向发生,我只希望控制器返回401,以便我可以在客户端处理它。在此问题上的任何帮助都将不胜感激 除帐户控制器上的登录方法外,所有代码都是股票会员资格提供程序 [HttpPost] [AllowAnonymous] public async Task<

我的目标是从我的登录控制器返回401错误。我用内置的.Net成员资格提供商启动了一个股票MVC站点。当前发生的情况是,当我从控制器返回401时,我得到一个
http://xxxxx/Account/Login?ReturnURL=XXXX
我不希望重定向发生,我只希望控制器返回401,以便我可以在客户端处理它。在此问题上的任何帮助都将不胜感激

除帐户控制器上的登录方法外,所有代码都是股票会员资格提供程序

[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> Login(LoginViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    // This doesn't count login failures towards account lockout
    // To enable password failures to trigger account lockout, change to shouldLockout: true
    var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
    switch (result)
    {
        case SignInStatus.Success:
            return new HttpStatusCodeResult(200);
        case SignInStatus.LockedOut:
            return View("Lockout");
        case SignInStatus.RequiresVerification:
        //     return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
        case SignInStatus.Failure:
        default:
            return new HttpStatusCodeResult(401);
    }
}
[HttpPost]
[异名]
公共异步任务登录(LoginViewModel模型)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shouldllockout:false);
开关(结果)
{
案例标志状态成功:
返回新的HttpStatusCodeResult(200);
案例标志状态锁定输出:
返回视图(“锁定”);
案例标志状态。要求验证:
//return RedirectToAction(“SendCode”,new{ReturnUrl=ReturnUrl,RememberMe=model.RememberMe});
案例信号状态故障:
违约:
返回新的HttpStatusCodeResult(401);
}
}

在MVC5中,项目中有一个
Startup.cs
,代码为

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(WebMVC.Startup))]
namespace WebMVC
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

注释掉
ConfigureAuth(应用程序)
并且它不会在
Startup.Auth.cs
中注册函数,因此您可以获得HTTP错误401.0-未经授权

我没有遵循mIchaelMao的建议。我必须在Startup.Auth.cs

的第28行注释掉
LoginPath=new PathString(“/Account/Login”)
,如果这样做,我将不会运行MVC为我设置的所有身份验证。您期望的
ActionResult
返回类型和返回值就是这种类型的一个实例。如果要返回纯状态代码,请查看web API模板中的
IHttpActionResult