相关疑难解决方法(0)

找不到Request.GetOwinContext

我一直在寻找一个小时试图弄清楚为什么这不起作用.

我有一个带有WebAPI的ASP.Net MVC 5应用程序.我正在尝试获取Request.GetOwinContext().身份验证,但我似乎无法找到如何包含GetOwinContext.这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using TaskPro.Models;

namespace TaskPro.Controllers.api
{
    public class AccountController : ApiController
    {
        [HttpPost]
        [AllowAnonymous]
        public ReturnStatus Login(LoginViewModel model)
        { 
            if (ModelState.IsValid)
            {
                var ctx = Request.GetOwinContext(); // <-- Can't find this

                return ReturnStatus.ReturnStatusSuccess();
            }

            return base.ReturnStatusErrorsFromModelState(ModelState);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从我读过的内容来看,它应该是System.Net.Http的一部分,但我已经包含了它,但它仍然没有解决.Ctrl-Space也没有给我任何intellisense选项.

我在这里错过了什么?

c# asp.net-web-api owin

93
推荐指数
6
解决办法
8万
查看次数

System.Web.HttpContextBase'不包含带有Elmah Logging的'当前'MVC 4的定义

我有一个C#ASP.NET MVC 4项目,它使用Elmah来捕获任何未处理的异常.这在大多数情况下都很有效.

但是我发现对于使用JQuery Ajax调用调用的控制器方法,我无法获得当前的Context.

例如,在我的控制器方法中,返回JsonResult我有这个测试代码;

try
{
    throw new Exception("This is a test");
}
catch(Exception e)
{
    Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(e));
}
Run Code Online (Sandbox Code Playgroud)

HttpContext.Current

导致以下错误;

'System.Web.HttpContextBase'不包含'Current'的定义,并且没有扩展方法'Current'可以找到类型为'System.Web.HttpContextBase'的第一个参数'(你是否缺少using指令或程序集引用) ?)

我怎样才能解决这个问题?

c# asp.net-mvc asp.net-mvc-4

47
推荐指数
1
解决办法
5万
查看次数

使用MVC 5 Identity进行电子邮件验证

private IAuthenticationManager AuthenticationManager {get {return HttpContext.GetOwinContext().Authentication; }}

我得到错误:'System.Web.HttpContextBase'不包含'GetOwinContext'的定义,并且没有扩展方法'GetOwinContext'接受类型'System.Web.HttpContextBase'的第一个参数可以找到(你是否错过了使用指令或程序集引用?)可能出错?

asp.net-mvc identity

16
推荐指数
1
解决办法
8004
查看次数

'System.Web.HttpContext'不包含'GetOwinContext'Mystery的定义

我意识到这个问题对某些人来说可能看起来微不足道,但是这些类型的东西让我发现自己很多时候都在战斗,我只是想弄清楚这一切尽管在.net中看起来像是一场失败的战斗(无论如何对我来说) ).

所以,如果我做以下事情:

    using System.Web;
...
ApplicationUser user = System.Web.HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)

这会产生标题中的错误和红色GetOwinContext()和错误无法解析符号'GetOwinContext()'

但是,如果我执行以下操作(System.Web从前面删除HttpContext),它按预期工作(或至少没有错误):

using System.Web;
    ...
    ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做(使用using System.Web注释掉的同一行):

    //using System.Web;
            ...
ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)

它产生相同的红色GetOwinContext()和错误无法解析符号'GetOwinContext()'

如果我谷歌HttpContext我只能发现它源于System.Web.

所以,问题是为什么我不能像上面第一个例子那样使用完整的语法?(在答案中也提到了最高票数:ASP.NET MVC 5 - Identity.如何获取当前的ApplicationUser)

更新(以解决重复的问题回复):虽然对该问题的答案可能得出相同的结论,但我真的不明白这是一个重复的问题.试着从新手的角度来思考它并解析所有的烟雾和镜子.Net.我从来没有尝试过像生活中那样令人费解的东西.有时你必须从许多不同的角度看问题.

我实际上看到了这个问题以及另一个关于使用的问题Current,但是没有让我感到震惊1)作为我正在寻找的答案(当时)2)更重要的是,为什么它表现得那样.Sam的答案很完美,虽然有点过头了.但是,至少现在,我可以去研究这一切意味着什么......

asp.net asp.net-mvc visual-studio

12
推荐指数
3
解决办法
2万
查看次数