【问题标题】:how can Add My On Claim on DotNetOpenAuth如何在 DotNetOpenAuth 上添加我的声明
【发布时间】:2011-03-21 05:30:54
【问题描述】:

如何将我自己的声明添加到使用 DotNetOpenAuth 作为 OpenID 提供者的用户断言中?

我需要向 ClaimsRequest 和 ClaimsResponse 添加一些属性,例如“UserID”。我在类 ClaimsRequest.cs 和 ClaimsResponse.cs 中都添加了这个属性,当我用这个更改构建 DotNetOpenAuth 时,它在 VS 2010 中运行良好,但是当我在 iis 7.5 上发布时,它会抛出这个异常:

“/OpenID”应用程序中的服务器错误。

无法加载文件或程序集 'DotNetOpenAuth.Contracts' 或其中之一 它的依赖关系。强大的名字 无法验证签名。这 组件可能已被篡改, 或者是延迟签署但未完全签署 用正确的私钥签名。 (来自 HRESULT 的异常:0x80131045) 描述:未处理的异常 在执行过程中发生 当前的网络请求。请查看 堆栈跟踪以获取有关的更多信息 错误及其起源 编码。

异常详情: System.IO.FileLoadException:不能 加载文件或程序集 'DotNetOpenAuth.Contracts' 或其中之一 它的依赖关系。强大的名字 无法验证签名。这 组件可能已被篡改, 或者是延迟签署但未完全签署 用正确的私钥签名。 (HRESULT 异常:0x80131045)

来源错误:

产生了一个未处理的异常 在当前执行期间 网络请求。有关的信息 异常的起源和位置 可以使用异常识别 下面的堆栈跟踪。

装配负载跟踪:以下 信息可能有助于 确定为什么装配 'DotNetOpenAuth.Contracts' 不能 被加载。

警告:程序集绑定日志记录是 关掉。启用程序集绑定 失败记录,设置注册表 价值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 为 1。 注意:有一些 与相关的性能损失 程序集绑定失败日志记录。转 关闭此功能,删除注册表 价值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

堆栈跟踪:

[FileLoadException: 无法加载 文件或程序集 'DotNetOpenAuth.Contracts' 或其中之一 它的依赖关系。强大的名字 无法验证签名。这 组件可能已被篡改, 或者是延迟签署但未完全签署 用正确的私钥签名。 (HRESULT 异常:0x80131045)]

[FileLoadException: 无法加载 文件或程序集 'DotNetOpenAuth.Contracts, 版本=3.4.6.11075,文化=中性, PublicKeyToken=2780ccd10d57b246' 或 它的依赖项之一。强大的名字 无法验证签名。这 组件可能已被篡改, 或者是延迟签署但未完全签署 用正确的私钥签名。 (来自 HRESULT 的异常:0x80131045)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名、字符串代码库、证据 程序集安全、运行时程序集 locationHint、StackCrawlMark& stackMark,布尔值 throwOnFileNotFound,布尔值 forIntrospection,布尔值 抑制安全检查)+0
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName 装配参考,证据 组装安全,StackCrawlMark& stackMark, Boolean for Introspection, 布尔型抑制安全检查)+567
System.Reflection.RuntimeAssembly.InternalLoad(字符串 组装字符串,证据 组装安全,StackCrawlMark& stackMark, Boolean for Introspection) +192 System.Reflection.Assembly.Load(字符串 组装字符串)+35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 程序集名称,布尔型星指令) +118

[ConfigurationErrorsException:可能 不加载文件或程序集 'DotNetOpenAuth.Contracts, 版本=3.4.6.11075,文化=中性, PublicKeyToken=2780ccd10d57b246' 或 它的依赖项之一。强大的名字 无法验证签名。这 组件可能已被篡改, 或者是延迟签署但未完全签署 用正确的私钥签名。 (来自 HRESULT 的异常:0x80131045)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 程序集名称,布尔型星指令) +11396867 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +484 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +127 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +334
System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, 托管环境参数 托管参数,策略级别 政策级别,例外 appDomainCreationException) +1087

[HttpException (0x80004005): 不能 加载文件或程序集 'DotNetOpenAuth.Contracts, 版本=3.4.6.11075,文化=中性, PublicKeyToken=2780ccd10d57b246' 或 它的依赖项之一。强大的名字 无法验证签名。这 组件可能已被篡改, 或者是延迟签署但未完全签署 用正确的私钥签名。 (来自 HRESULT 的异常:0x80131045)] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文)+11529072
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+141
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+4784373

----------------------------------- --------------------------------- 版本信息:Microsoft .NET 框架版本:4.0.30319; ASP.NET 版本:4.0.30319.1

【问题讨论】:

    标签: openid dotnetopenauth


    【解决方案1】:

    您不应该向ClaimsRequestClaimsResponse 类添加属性,因为这是简单注册扩展并且上面有一组固定的属性。

    相反,您应该使用属性交换扩展,它允许您在其上设置和检索任意属性(声明),而无需重新编译库。在 DotNetOpenAuth 中,这意味着使用 FetchRequestFetchResponse 类来承载您的自定义声明。

    您从 IIS 得到的错误是因为您不正确地“签名”了您的 DotNetOpenAuth 构建。但是,如果您按照这些说明进行操作,则不需要自己构建它,因此我将放弃有关如何正确构建的说明。

    【讨论】:

    • 你能给出这些关于如何正确构建它的说明吗?我遇到了同样的错误。我只需要添加更多日志信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2013-12-21
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多