WCF:指定的注册表项在 base.Channel 调用中不存在
Posted
技术标签:
【中文标题】WCF:指定的注册表项在 base.Channel 调用中不存在【英文标题】:WCF: The specified registry key does not exist in base.Channel call 【发布时间】:2013-01-04 02:53:31 【问题描述】:执行以下 WCF 代码时出现错误:“指定的注册表项不存在”:
return base.Channel.GetRateSheet(request);
这是使用 this 的其余方法:
public GetRateSheetResponse GetRateSheet(GetRateSheetRequest request)
return base.Channel.GetRateSheet(request);
此端点的配置是:
<endpoint address="http://*********/*******/Service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IBusinessService"
name="Endpoint_RateSheetService"
contract="*********.RateSheetService" />
这段代码曾经工作了好几个星期,今天早上开始抛出这个错误。
没有内部异常,我得到的唯一堆栈跟踪是:
at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
我做了所有常见的轮胎踢:重新启动VS,重新启动机器,获得最新版本的源代码。
运行 XP 32 位。
[编辑:] 当我转到解决方案的 bin 文件夹并直接运行可执行文件时,它可以工作 - 没有错误。该错误仅在从 Visual Studio 运行时发生
【问题讨论】:
当你说你有最新版本时,你是在谈论 .NET 4.5 吗? 不,源代码控制的源代码版本。谢谢。 最近有 OS 或 VS 更新吗? 周末好像有一次操作系统更新——我旁边的人说他的电脑重新启动了。操作系统更新相当合理。 【参考方案1】:似乎人们在为 .NET Framework 安装安全补丁后遇到了similar issues:MS12-074: Vulnerabilities in .NET Framework could allow remote code execution: November 13, 2012
你可以ask microsoft to fix it here
解决方法 - 添加以下注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"LegacyWPADSupport"=dword:00000000
对于 64 位机器
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]
"LegacyWPADSupport"=dword:00000000
【讨论】:
是的,但前提是它是在安装特定安全补丁后出现的。【参考方案2】:我今天在调试某些东西时遇到了这个问题。如果您在 VS 的调试设置中选中“仅我的代码”选项,异常就会消失。
【讨论】:
【参考方案3】:转到 --> Debug-->Exceptions 并取消选中“Common Language Runtime Exceptions”
这应该可以解决问题。
【讨论】:
以上是关于WCF:指定的注册表项在 base.Channel 调用中不存在的主要内容,如果未能解决你的问题,请参考以下文章