none
Asenkron Metod RRS feed

  • Genel Tartışma

  • Merhabalar, aşağıdaki kodu asenkrona çeviremedim sürekli hata alıyorum yardımcı olabilir misiniz?

    public static string GetExternalIP()
    {
        string externalIP;
        externalIP = (new System.Net.WebClient()).DownloadString("http://checkip.dyndns.org/");
        externalIP = (new System.Text.RegularExpressions.Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")).Matches(externalIP)[0].ToString();
        return externalIP;
    }

    1 Ağustos 2016 Pazartesi 06:16

Tüm Yanıtlar

  • C# 6 :
    private static readonly Regex ipAddressRegex = new System.Text.RegularExpressions.Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", RegexOptions.Compiled);
    public static async Task<string> GetExternalIPAsync()
    {
    	string externalIP;
    	using (var client = new System.Net.Http.HttpClient())
    	{
    		var response = await client.GetAsync("http://checkip.dyndns.org/");
    
    		if (!response.IsSuccessStatusCode)
    		{
    			throw new Exception($"Sunucu iletişimi sağlanamadı. Hata kodu: {response.StatusCode}");
    		}
    		var content = await response.Content.ReadAsStringAsync();
    
    		var matches = ipAddressRegex.Matches(content);
    		if (matches == null || matches.Count < 1)
    		{
    			throw new Exception("Sunucu içeriğinde ip bilgisi yok");
    		}
    		externalIP = matches[0].Value;
    	}
    	return externalIP;
    }

    1 Ağustos 2016 Pazartesi 07:07
  • Hocam,

    using (var client = new System.Net.Http.HttpClient()) 'deki Http'nin altını çiziyor.

    1 Ağustos 2016 Pazartesi 07:30
  • İndir NuGet'den... HttpClient varken WebClient kullanmaya gerek yok. Ayrıca framework versiyonun kaç?
    1 Ağustos 2016 Pazartesi 07:51
  • XP desteklemesi için 4.0 kullanıyorum.
    1 Ağustos 2016 Pazartesi 08:19
  • Framework 4.0 ile bu işi çözemez miyim?
    3 Ağustos 2016 Çarşamba 07:59
  • 4.0 için bir nuget paketi daha yüklemen lazım:

    İhtiyacın olan paketler: 

    Install-Package Microsoft.Bcl.Async

    Install-Package System.Net.Http

    3 Ağustos 2016 Çarşamba 10:15