Microsoft.AspNet.Identity.Owin.OwinContextExtensions 好像不行

Microsoft.AspNet.Identity.Owin.OwinContextExtensions doesn't seem to work

我正在单独的程序集中创建一个自定义 asp.net.identity 提供程序,以便在两个不同的 Web api 2 项目中使用它。 我以 Web api 项目的默认 vs2013 模板作为指南,到目前为止,我已经实现了所需的 classes。 在单独的程序集中,我使用从 Microsoft.AspNet.Identity.UserManager(Of T) class.

派生的用户管理器 class
Public Class EzeUserManager
Inherits UserManager(Of EzeIdentityUser)

现在我想实现创建共享函数,以便在 CreatePerOwinContext 函数中用作回调。根据模板,我是这样声明的:

Imports System.Threading.Tasks
Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.Owin
Imports Microsoft.Owin

Public Class EzeUserManager
    Inherits UserManager(Of EzeIdentityUser)

... Class Implementation ...

Public Shared Function Create(options As IdentityFactoryOptions(Of EzeUserManager), context As IOwinContext)
    Dim Result As New EzeUserManager(New EzeIdentityUserStore(context.Get(Of EzeLDAPContext)()))

问题是

context.Get(Of EzeLDAPContext)()

失败,因为它需要密钥。

从模板中我可以看到不需要密钥的 get 方法是 Microsoft.AspNet.Identity.Owin.OwinContextExtensions 中定义的扩展,我已经通过 nuget 安装和引用它并将其导入 class.

但是没用。

我发现关键实际上是 class 的类型名称,所以我可能可以解决这个问题,但是我还没有尝试,因为我真的想让扩展工作。

问题是:我是不是遗漏了什么?

注意:有问题的项目是一个 Class 库,目标为 .NET 4.5.1,具有以下引用:

Microsoft.AspNet.Identity.Core
Microsoft.AspNet.Identity.Owin
Microsoft.Owin
Microsoft.Owin.Security
Microsoft.Owin.Security.Cookies
Microsoft.Owin.Security.OAuth
Newtonsoft.Json
Owin

正如我在问题中所解释的,我正在使用 VS 生成的模板作为指南。在我的项目实施过程中,我多次更新了 nuget 包,但只是在我的项目中而不是在模板项目(相同的解决方案)中,因为我之后要删除它。这导致两个项目引用所需程序集的两个不同版本。 我不知道这个 "multi" 引用究竟是如何以及为什么导致这个问题的,但是一旦我更新了模板项目的 nuget 包,问题就解决了。

我希望这对遇到类似问题的人有所帮助。