gpt4 book ai didi

c# - 找不到 Request.GetOwinContext

转载 作者:IT王子 更新时间:2023-10-29 03:36:54 26 4
gpt4 key购买 nike

我已经搜索了一个小时,试图弄清楚为什么这不起作用。

我有一个带有 WebAPI 的 ASP.Net MVC 5 应用程序。我正在尝试获取 Request.GetOwinContext().Authentication,但我似乎无法找到如何包含 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);
}
}
}

根据我的阅读,它应该是 System.Net.Http 的一部分,但我已经包含了它,但它仍然没有解析。 Ctrl-Space 也不给我任何智能感知选项。

我在这里错过了什么?

最佳答案

GetOwinContext扩展方法在System.Web.Http.Owin dll中,需要作为nuget包下载( nuget 包名称是 Microsoft.AspNet.WebApi.Owin)

Install-Package Microsoft.AspNet.WebApi.Owin

请在此处查看 msdn:http://msdn.microsoft.com/en-us/library/system.net.http.owinhttprequestmessageextensions.getowincontext(v=vs.118).aspx

Nuget 包在这里:https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Owin

但是,该方法仍然是 System.Net.Http 命名空间的一部分,因此您拥有的 using 定义应该没问题。

编辑

好吧,澄清一些困惑:如果您使用的是 ApiController(即 MyController : ApiController),您将需要 Microsoft.AspNet.WebApi.Owin 程序包。

如果您使用的是常规 Mvc Controller (即 MyController : Controller),您将需要 Microsoft.Owin.Host.SystemWeb 包。

在 MVC 5 中,Api 和常规 MVC 的管道非常不同,但通常具有相同的命名约定。因此,一个中的扩展方法不适用于另一个。许多 Action 过滤器等​​也是如此。

关于c# - 找不到 Request.GetOwinContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com