求助:.NET Framework 4.8 MVC集成Microsoft Entra ID遇OWIN方法缺失错误
解决ASP.NET MVC .NET Framework 4.8集成Entra ID时的OWIN认证错误
以下是针对你遇到的三类错误的具体解决步骤:
1. 确认并安装正确的NuGet包
确保项目中安装了以下OWIN相关包,且所有OWIN包版本完全一致(推荐稳定版本如4.2.2,避免版本冲突):
Microsoft.Owin.Security.OpenIdConnectMicrosoft.Owin.Security.CookiesMicrosoft.Owin.Host.SystemWebMicrosoft.Owin(基础OWIN包,需和其他OWIN包版本统一)
可以通过NuGet包管理器控制台执行以下命令安装(替换版本号为你选择的稳定版本):
Install-Package Microsoft.Owin -Version 4.2.2 Install-Package Microsoft.Owin.Security.Cookies -Version 4.2.2 Install-Package Microsoft.Owin.Security.OpenIdConnect -Version 4.2.2 Install-Package Microsoft.Owin.Host.SystemWeb -Version 4.2.2
2. 检查并添加必要的命名空间
在Startup.Auth.cs文件顶部添加以下命名空间,确保能找到OpenIdConnect相关类型:
using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect;
3. 统一OWIN包版本并修复绑定重定向
如果项目中存在不同版本的OWIN包,会导致类型加载异常:
- 打开NuGet包管理器,筛选项目中的“OWIN”相关包,将所有包的版本修改为同一稳定版本
- 打开
web.config,在<runtime>节点下添加绑定重定向配置(替换版本号为你使用的版本):
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.OpenIdConnect" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" /> </dependentAssembly> </assemblyBinding> </runtime>
4. 清理并重建项目
- 右键解决方案,选择“清理解决方案”
- 手动删除项目目录下的
bin和obj文件夹 - 右键项目,选择“生成”或“重新生成”
5. 排除错误的包引用
确保没有误引用System.IdentityModel.Tokens.OpenIdConnect这类非OWIN的OpenIdConnect包,该包主要用于ASP.NET Core或Windows Identity Foundation(WIF)场景,和OWIN的Microsoft.Owin.Security.OpenIdConnect是完全不同的实现。
内容的提问来源于stack exchange,提问作者Menake Panduwawala
相关产品推荐
相关产品推荐

