Vb.net UseExternalSignInCookie不是Owin.IAppBuilder的成员
我有两个VS 2013 MVC 5 SPA web项目。这两个模板都是新创建的,尚未修改(即仍然是普通模板)。其中一个有效,另一个无效。我能看到的唯一区别是,一个项目是在一个从VS 2010升级到VS 2012再升级到2013的项目中创建的,是解决方案中大约60-70个项目之一。另一个是新创建的解决方案,其中MVC应用程序是其中唯一的项目 新的MVC应用程序在其自己的解决方案中可以正常工作,但是,添加到升级项目中的MVC应用程序出现以下编译时错误:Vb.net UseExternalSignInCookie不是Owin.IAppBuilder的成员,vb.net,asp.net-mvc-5,owin,Vb.net,Asp.net Mvc 5,Owin,我有两个VS 2013 MVC 5 SPA web项目。这两个模板都是新创建的,尚未修改(即仍然是普通模板)。其中一个有效,另一个无效。我能看到的唯一区别是,一个项目是在一个从VS 2010升级到VS 2012再升级到2013的项目中创建的,是解决方案中大约60-70个项目之一。另一个是新创建的解决方案,其中MVC应用程序是其中唯一的项目 新的MVC应用程序在其自己的解决方案中可以正常工作,但是,添加到升级项目中的MVC应用程序出现以下编译时错误: 'UseExternalSignInCooki
'UseExternalSignInCookie' is not a member of 'Owin.IAppBuilder'. ...\Mvc5UI\App_Start\Startup.Auth.vb
'UseOAuthBearerTokens' is not a member of 'Owin.IAppBuilder'. ...\Mvc5UI\App_Start\Startup.Auth.vb
'GetExternalAuthenticationTypes' is not a member of 'Microsoft.Owin.Security.IAuthenticationManager'. ...\Mvc5UI\Controllers\AccountController.vb
出现问题的代码(Startup.Auth.vb):
和(AccountController.vb)
这段代码在升级的解决方案和新构建的解决方案中都是相同的,因此存在一些环境问题。我已确保NuGet软件包的设置正确。我发现最有趣的事情(可能是我的误解)是,当我探索
IAppBuilder
的程序集元数据时,我没有看到任何引用的方法,因此错误是有意义的。然而,问题变成了,为什么它在新创建的MVC应用程序中工作?当我写这个问题时,我能够确定答案。UseExternalSignInCookie
和useauthBearTokens
方法实际上是IAppBuilder上的扩展方法,这就是我感到困惑的原因。这些扩展方法位于Microsoft.Owin.Security.Cookies中,显然未正确引用
在弄清楚这一点之后,当我查看项目引用时,我注意到Microsoft.AspNet.Identity.Owin程序集引用已被破坏,因此我使用update package-reinstall Microsoft.AspNet.Identity.Owin
package manager命令重新安装了该程序包,然后一切都开始工作
我仍然不知道为什么一开始就坏了,但现在它正在工作。我遇到了类似的问题,命令解决了我的问题,谢谢
Public Sub ConfigureAuth(app As IAppBuilder)
'...
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie)
app.UseOAuthBearerTokens(OAuthOptions)
'...
End Sub
Public Function GetExternalLogins(returnUrl As String, Optional generateState As Boolean = False) As IEnumerable(Of ExternalLoginViewModel)
Dim descriptions As IEnumerable(Of AuthenticationDescription) = Authentication.GetExternalAuthenticationTypes()
'...
End Sub