无法解析类型 'System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel'
The type 'System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel' cannot be resolved
我对这个错误感到困惑。我到处都看了,用谷歌搜索了我所知道的一切。
我正在将应用程序从 dotnet 4.5.3 更新到 dotnet 4.8。设置没有发生太大变化,这个身份配置已经很长时间没有改变了。更新后的代码 运行 在开发和测试环境中表现良好。现在是时候更新 qa 环境了。此升级有新服务器。所有 运行 相同版本 Windows 10(只是最新的)。我已经在所有这些设备上安装了 dotnet 4.8。我已验证 GAC 中存在 System.IdentityModel.dll
。 (我什至反编译了程序集并验证了这个 class 存在于其中。)我已经验证了我的 .csproj 文件中引用了 dll。
然而,当我启动网站时,这是迎接我的错误。
让我重复一遍,同样的代码在开发和测试环境中运行良好,但同样的构建在 qa 环境中失败。
这是导致问题的配置。
<system.identityModel>
<identityConfiguration>
<claimsAuthenticationManager type="MF.Framework.Security.CustomClaimsAuthenticationManager, MF.Framework.Data" />
<audienceUris>
<add value="https://some.client.com/ws/IRNExternalOrderCS_v2_2" />
<add value="https://login.to.another.client.com/services/trust" />
<add value="https://more.clients.com/idp/shibboleth" />
<add value="https://test.westeurope.cloudapp.azure.com/AuthServices" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel">
<trustedIssuers>
<add name="IdSrv" thumbprint="value-redacted" />
</trustedIssuers>
</issuerNameRegistry>
<certificateValidation certificateValidationMode="None" />
<securityTokenHandlers>
<clear />
<add type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel" />
<securityTokenHandlerConfiguration>
<audienceUris>
<add value="https://some.client.com/ws/IRNExternalOrderCS_v2_2" />
<add value="https://another.client.com/idp/shibboleth" />
<add value="https://test.westeurope.cloudapp.azure.com/AuthServices" />
</audienceUris>
</securityTokenHandlerConfiguration>
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>
如果有人知道为什么这不是从 GAC 加载的,我洗耳恭听。
问题的答案是将程序集依赖项中的 Copy Local
设置为 true。
不确定为什么找不到这个程序集。这让我大吃一惊。在花了 +3 天的时间寻找它之后,我称它退出,因为这个解决方案有效。
我对这个错误感到困惑。我到处都看了,用谷歌搜索了我所知道的一切。
我正在将应用程序从 dotnet 4.5.3 更新到 dotnet 4.8。设置没有发生太大变化,这个身份配置已经很长时间没有改变了。更新后的代码 运行 在开发和测试环境中表现良好。现在是时候更新 qa 环境了。此升级有新服务器。所有 运行 相同版本 Windows 10(只是最新的)。我已经在所有这些设备上安装了 dotnet 4.8。我已验证 GAC 中存在 System.IdentityModel.dll
。 (我什至反编译了程序集并验证了这个 class 存在于其中。)我已经验证了我的 .csproj 文件中引用了 dll。
然而,当我启动网站时,这是迎接我的错误。
让我重复一遍,同样的代码在开发和测试环境中运行良好,但同样的构建在 qa 环境中失败。 这是导致问题的配置。
<system.identityModel>
<identityConfiguration>
<claimsAuthenticationManager type="MF.Framework.Security.CustomClaimsAuthenticationManager, MF.Framework.Data" />
<audienceUris>
<add value="https://some.client.com/ws/IRNExternalOrderCS_v2_2" />
<add value="https://login.to.another.client.com/services/trust" />
<add value="https://more.clients.com/idp/shibboleth" />
<add value="https://test.westeurope.cloudapp.azure.com/AuthServices" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel">
<trustedIssuers>
<add name="IdSrv" thumbprint="value-redacted" />
</trustedIssuers>
</issuerNameRegistry>
<certificateValidation certificateValidationMode="None" />
<securityTokenHandlers>
<clear />
<add type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel" />
<securityTokenHandlerConfiguration>
<audienceUris>
<add value="https://some.client.com/ws/IRNExternalOrderCS_v2_2" />
<add value="https://another.client.com/idp/shibboleth" />
<add value="https://test.westeurope.cloudapp.azure.com/AuthServices" />
</audienceUris>
</securityTokenHandlerConfiguration>
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>
如果有人知道为什么这不是从 GAC 加载的,我洗耳恭听。
问题的答案是将程序集依赖项中的 Copy Local
设置为 true。
不确定为什么找不到这个程序集。这让我大吃一惊。在花了 +3 天的时间寻找它之后,我称它退出,因为这个解决方案有效。