Özgür Özvarış

Bir yazılımcının kırık dökük dünyası

Handling HttpWebRequest.GetResponse WebException Error

clock Kasım 24, 2017 16:09 by author OzgurOzvaris

Merhaba ,

Kaynak :

https://stackoverflow.com/questions/7261986/how-to-get-error-information-when-httpwebrequest-getresponse-fails 

HttpWebRequest nesnesi bazı http status kodlarına göre hata dönebilir böyle bir durumda c# kodunuz catch'e düşecektir. Bu aşamada catch bloğunda bu responseların body kısmından hata ile ilgili içeriği alabilirsiniz.

try
{

            WebRequest webRequest = WebRequest.Create(txtUrl.Text);
            HttpWebRequest httpRequest = (HttpWebRequest)webRequest;

            httpRequest.Method = "POST";
            httpRequest.ContentType = "application/json; charset=utf-8";

            string sAuthorization = "Authorization: Basic " + txtApiKey.Text;
            httpRequest.Headers.Add(sAuthorization);

            httpRequest.ProtocolVersion = HttpVersion.Version11;
            httpRequest.Accept = "text/xml";
            httpRequest.Credentials = CredentialCache.DefaultCredentials;
            if (txtHeader.Text != "")
            {
                httpRequest.Headers.Add(txtHeader.Text);
            }

            Stream requestStream = httpRequest.GetRequestStream();
            //Create Stream and Complete Request             
            StreamWriter streamWriter = new StreamWriter(requestStream, Encoding.ASCII);
            streamWriter.Write(txtRequestData.Text);
            streamWriter.Close();
            
            HttpWebResponse wr = (HttpWebResponse)httpRequest.GetResponse();
            StreamReader srd = new StreamReader(wr.GetResponseStream());
            txtResponseData.Text = srd.ReadToEnd();



}
catch (WebException ex)
{
    using (var stream = ex.Response.GetResponseStream())
    using (var reader = new StreamReader(stream))
    {
        txtResponseData.Text = reader.ReadToEnd();
    }
}
catch (Exception ex)
{
    // Something more serious happened
    // like for example you don't have network access
    // we cannot talk about a server exception here as
    // the server probably was never reached
}

 

İyi çalışmalar

 

 



c# TLS 1.2 connection .Net 4.0

clock Kasım 23, 2017 11:42 by author OzgurOzvaris

Merhaba Arkadaşlar

Kaynak :

TCP/IP Protocol Architecture

SslProtocols Enumeration

https://stackoverflow.com/questions/4137106/are-there-net-implementation-of-tls-1-2 

https://stackoverflow.com/questions/37869135/is-that-possible-to-send-httpwebrequest-using-tls1-2-on-net-4-0-framework

Bu gün ödeme entegrasyonu yaptığımız sistemlerden bir tanesi artık TLS 1.1 değil TLS 1.2 kullandıklarını söyledi. Bizde kodumuzu ona uydurmak durumunda kaldık.

Öncelikle TLS kavaramının OSI katmanlarında Transpor Layer Security kavramına karışık geldiğini belirtmekte fayda görüyorum. 

.Net 4.5 versiyonunda sorunsuz olarak TLS 1.2 yi destekliyor

//System.Net.ServicePointManager.SecurityProtocol
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // comparable to modern browsers
var response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse();
var body = new StreamReader(response.GetResponseStream()).ReadToEnd();

Fakat şuan bizim çalıştığımı proje ne yazıkki .Net 4.0

4.0 için de örnek kodumuz

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
ServicePointManager.DefaultConnectionLimit = 9999;

İyi çalışmalar.

 

 



Query column type alma

clock Kasım 14, 2017 13:56 by author OzgurOzvaris

Merhaba Arkadaşlar,

Kaynak : https://stackoverflow.com/questions/20107827/insert-data-into-temp-table-with-query

Entityframe work kullanıyorsanız şöyle bir ihtiyacınız olacaktır. Bazen karmaşık sql sorgu üzerinden rapor almanız gerekecektir. Bu durumda uzun select query'i entity framework'e çevirmek çok ta mantıklı değildir. Öyle ise mevcut sorgularınızı Context.ExecuteStoreQuery<cListType> methodu ile classlara çevirmeniz gerekmektedir. Bu durumda eğer sorgunuzun çok fazla kolonu var ise bu kolonların class karşılıklarının hangi tiple olması gerektiğini teker teker bilmeniz gerekmektedir. Bu işlemi tek tek yapmak istemiyorsanız aşağıdaki yöntem işinize yarayacaktır.

SELECT TOP 10 *
INTO #TempTable
FROM <DataSource>
Then use:

EXEC tempdb.dbo.sp_help N'#TempTable';
or

SELECT * 
FROM tempdb.sys.columns 
WHERE [object_id] = OBJECT_ID(N'tempdb..#TempTable');

istediğini kolon tipleri bilgisini aldıktan sonra

DROP TABLE #TempTable

sql scripti ile temp tabloyu silebilirsiniz.

İyi çalışmalar.



Hakkımızda  AboneOl 

Blog Yayınımıza Hoşgeldiniz.

Month List

RecentPosts

Sign In