2013-01-21 22 views
20

我得到一个错误:“指定的注册表项不存在”正在执行下面的WCF代码时:WCF:指定的注册表项不base.Channel呼叫存在

return base.Channel.GetRateSheet(request); 

这是在此使用该方法的其余部分:

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中运行时出现的错误

+0

当你说你有最新版本,你在谈论.NET 4.5? – Despertar

+0

否,来自源代码管理的源代码版本。谢谢。 – Paceman

+0

任何最近的操作系统或VS更新? – nunespascal

回答

36

似乎安装.NET Framework的安全补丁后人们面临similar issuesMS12-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 
+0

所以这个问题是通过添加这个注册表键来解决的? –

+0

是的,但只有在安装该特定安全补丁后才出现。 – nunespascal

5

我今天在调试某些东西时遇到了这个问题。如果您在VS中的调试设置中选中“Just my code”选项,则异常消失。

0

进入 - >调试 - >例外,取消选择 “公共语言运行库异常”

这应该reslove问题。