C# 在asp mvc的上下文中未找到owin.Environment项

C# 在asp mvc的上下文中未找到owin.Environment项,c#,asp.net-mvc,owin,asp.net-identity-2,katana,C#,Asp.net Mvc,Owin,Asp.net Identity 2,Katana,这是我的身份注册代码: [AllowAnonymous] public ActionResult Register() { var roles = db.Roles.Select(r => new { RoleID = r.Id, RoleName = r.Name }).ToList(); ViewBag.Roles = new SelectList(roles, "RoleID", "RoleName"); return View(); } // // PO

这是我的身份注册代码:

[AllowAnonymous]
public ActionResult Register()
{
    var roles = db.Roles.Select(r => new { RoleID = r.Id, RoleName = r.Name }).ToList();
    ViewBag.Roles = new SelectList(roles, "RoleID", "RoleName");

    return View();
}

//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model, HttpPostedFileBase UserPhoto)
{
    if (ModelState.IsValid)
    {
        model.DateRegister = DateTime.Now;
        var user = new ApplicationUser
        {
            UserName = model.UserName,
            Name = model.Name,
            Family = model.Family,
            PhoneNumber = model.PhoneNumber,
            Gender = model.Gender,
            BirthDay = model.BirthDay,
            DateRegister = model.DateRegister,
            IsActive = false,
            Email = model.Email
        };

        if (UserPhoto != null)
        {
            UserPhoto = Request.Files[0];
            var ext = System.IO.Path.GetExtension(UserPhoto.FileName);
            if (ext == ".jpeg" || ext == ".jpg" || ext == ".png")
            {

                string filename = model.PhoneNumber + ext;
                UserPhoto.SaveAs(Server.MapPath(@"~/Image/" + filename));
                user.UserPhoto = filename;
            }
        }

        var result = await UserManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {

            await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
            await UserManager.AddToRoleAsync(user.Id,model.UserRoles);
            return RedirectToAction("Index", "Home");
        }
        AddErrors(result);
    }


    return View(model);
}
[AllowAnonymous]
公众行动结果登记册()
{
var roles=db.roles.Select(r=>new{RoleID=r.Id,RoleName=r.Name}).ToList();
ViewBag.Roles=新的选择列表(Roles,“RoleID”,“RoleName”);
返回视图();
}
//
//职位:/Account/Register
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务


问题是什么?如何解决

根据之前的对话,您确认

[assembly: OwinStartup(typeof(Identity_Work.Startup))]
已存在于
Startup.cs

这意味着不再需要web.config中的
owin:AppStartup

因此,您的
appSettings
应该如下所示

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="owin:AutomaticAppStartup" value="true" /> <!-- This should be true -->
</appSettings>


检查
Startup.cs
很可能找不到它,如果您更改
并确保安全,还可以查看它是否工作,使用this时在
中包含程序集名称显示此错误:
具有键“UserRoles”的ViewData项的类型为“System.String”,但必须为“IEnumerable”。
确定这是一个新错误。所以至少老问题现在已经解决了。这是一个与您在控制器和视图之间传递的数据相关的错误。看起来它与dropdownlist有关。感谢您的回答!我以前安装过OAuth登录,直到今天尝试登录XD时才知道它停止工作。它又起作用了!
<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="owin:AutomaticAppStartup" value="true" /> <!-- This should be true -->
</appSettings>