SORU
30 EKİM 2012, Salı


HttpClient istek IOException atar

Kod mesaj ile bir IOException atar şu: "belirtilen kayıt defteri anahtarı yok."

HttpClient client = new HttpClient();

Uri uri = new Uri("http://www.google.com");

client.GetAsync(uri);

Bu Ana Uygulama konsol. Hata mscorlib.dll atılmış olması gibi görünüyor!Microsoft.Win32.Registry.Win32Error(int errorCode, string str). Bu hata, ortaya atılır ya da neden bu hata ayıklama başlatmak için nasıl hiçbir fikrim yok.

Yığın izleme düzenleme:

Microsoft'ta.Win32.Registry.Win32Error(Int32 errorCode, String str)

Sadece 1 çizgi var ve vb. iç exxception yok

Çağrı yığını

mscorlib.dll!Microsoft.Win32.RegistryKey.Win32Error(int errorCode, string str)   0x189 bytes    
mscorlib.dll!Microsoft.Win32.RegistryKey.GetValueKind(string name)   0x7f bytes 
System.dll!System.Net.HybridWebProxyFinder.InitializeFallbackSettings()   0x9e bytes    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.dll!System.Net.AutoWebProxyScriptEngine.AutoWebProxyScriptEngine(System.Net.WebProxy proxy, bool useRegistry)   0xd0 bytes   
System.dll!System.Net.WebProxy.UnsafeUpdateFromRegistry()   0x2c bytes  
System.dll!System.Net.Configuration.DefaultProxySectionInternal.DefaultProxySectionInternal(System.Net.Configuration.DefaultProxySection section)   0x1d8 bytes 
System.dll!System.Net.Configuration.DefaultProxySectionInternal.GetSection()   0xec bytes   
System.dll!System.Net.WebRequest.InternalDefaultWebProxy.get()   0xcc bytes 
System.dll!System.Net.HttpWebRequest.HttpWebRequest(System.Uri uri, System.Net.ServicePoint servicePoint)   0xdf bytes  
System.dll!System.Net.HttpWebRequest.HttpWebRequest(System.Uri uri, bool returnResponseOnFailureStatusCode, string connectionGroupName, System.Action<System.IO.Stream> resendRequestContent)   0x2b bytes  
System.Net.Http.dll!System.Net.Http.HttpClientHandler.CreateAndPrepareWebRequest(System.Net.Http.HttpRequestMessage request)   0x59 bytes   
System.Net.Http.dll!System.Net.Http.HttpClientHandler.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)   0xf4 bytes  
System.Net.Http.dll!System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)   0x4f bytes 
System.Net.Http.dll!System.Net.Http.HttpClient.SendAsync(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken)   0x13e bytes 
System.Net.Http.dll!System.Net.Http.HttpClient.GetAsync(System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption)   0xc bytes   

ConsoleServiceTest.exe!ConsoleServiceTest.Program.Main(string[] args) Line 20   0x17 bytes  C#
    [Native to Managed Transition]  
    [Managed to Native Transition]  
    Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()   0x5a bytes  
    mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)   0x285 bytes 
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)   0x9 bytes   
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   0x57 bytes    
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()   0x51 bytes   
    [Native to Managed Transition]  

CEVAP
20 Kasım 2012, Salı


Bunun için yeni bir güvenlik güncelleştirmesinden kaynaklanıyor gibi görünüyor .NET Çerçeve: MS12-074: Vulnerabilities in .NET Framework could allow remote code execution: November 13, 2012 (KB 2745030)

Web proxy çözünürlüğü: aşağıdaki kodu aşağı kaynar

[RegistryPermission(SecurityAction.Assert, Read=@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework")]
private static void InitializeFallbackSettings()
{
    allowFallback = false;
    try
    {
        using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework"))
        {
            try
            {
                if (key.GetValueKind("LegacyWPADSupport") == RegistryValueKind.DWord)
                {
                    allowFallback = ((int) key.GetValue("LegacyWPADSupport")) == 1;
                }
            }
            catch (UnauthorizedAccessException)
            {
            }
            catch (IOException)
            {
            }
        }
    }
    catch (SecurityException)
    {
    }
    catch (ObjectDisposedException)
    {
    }
}

Gördüğünüz gibi, belirli bir kayıt defteri anahtarı KB makalesinde belirtilen denetler. Ayrıca bu durum, DAHİLİ olarak yakalandı dikkat etmelisiniz, ama Visual Studio hata ayıklama seçenekleri İlk Şansını özel Durumlar etkin çünkü.

Eğer bu özel durum değil, görmek isterseniz 0 değeri: belirtilen kayıt defteri anahtarını eklemeniz gerekir

Registry location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework  
DWORD (32-bit) Value name: LegacyWPADSupport
Value data: 0

ve 64 bit makineler için

Registry location: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework
DWORD (32-bit) Value name: LegacyWPADSupport
Value data: 0

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • tsweeney79

    tsweeney79

    21 Ocak 2008