我正在执行以下WCF代码时收到错误消息:“指定的注册表项不存在”:

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运行时才会出现该错误

最佳答案

在为.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

关于c# - WCF:指定的注册表项在base.Channel调用中不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14432079/

10-11 15:37