Ö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.

 

 



Unable to load DLL 'SQLite.Interop.dll'

clock Kasım 29, 2016 12:38 by author OzgurOzvaris

Merhaba,

Kaynak :

Unable to load DLL 'SQLite.Interop.dll'

System.Data.SQLite Downloads

Başlıktaki hatanın .net ile Sql lite kullandı iseniz genel olarak karşılaşacağınız bir hata olduğunu düşünüyorum. Bu sorunun çözümü ile ilgili sql lite ınresmi sitesinde yazılan açıklamada Sql.lite dll i ile birlikte x86 ve x64 klasörleri ile gelen interop dll lerininde kurmanız yönünde. Proje çalıştığında dosyaları nereye yığıyorsa (release folder or debug folder) örneğin bu "bin" klasörü olabilir x86 ve x64 folderları ve içindeki interop dll leride orada olmalı.

Resmi sitedeki açıklama şu şekilde özetlenmiş

<bin>\App.exe (optional, managed-only application executable assembly)
<bin>\App.dll (optional, managed-only application library assembly)
<bin>\System.Data.SQLite.dll (required, managed-only core assembly)
<bin>\System.Data.SQLite.Linq.dll (optional, managed-only LINQ assembly)
<bin>\System.Data.SQLite.EF6.dll (optional, managed-only EF6 assembly)
<bin>\x86\SQLite.Interop.dll (required, x86 native interop assembly)
<bin>\x64\SQLite.Interop.dll (required, x64 native interop assembly)

İyi çalışmalar. 

 



Is ambiguous in the namespace

clock Kasım 29, 2016 09:40 by author OzgurOzvaris

Merhaba Arkadaşlar,

Kaynak :

Is ambiguous in the namespace

Ambiguous in the namespace problem

Size tuhaf bir sorundan bahsedeceğim. Vb.net de olduğu söylenen, nereden çıktığı çok belli olmayan ancak basit bir müdehale ile düzeltebileceğiniz bir hata. Bu hatayı düzeltmek için yapamnız gereken tek şey. Web.config dosyasında compliation bölümüne batch="false" eklemeniz.

<compilationdebug="true"batch="false"  strict="false"explicit="true"targetFramework="4.0"batch="false">

Umarım karşılaşmazsınız :) 



Test Automation tool

clock Ağustos 18, 2014 18:17 by author OzgurOzvaris

Merhaba,

Geçen gün güzel bir sunuma katıldım. Test automation tollardan özellikle şu ikisi aklımda kaldı sizlerle de paylaşayım.

jmeter

http://jmeter.apache.org/

Bir ara bende stress testi için bu tool'u kullanmış ve windows ortamına uyarlamıştım. Konu ile ilgili makalem http://www.ozgurozvaris.com/post/2014/02/14/Jmeter.aspx

Bir diğer tool'da

Selenium

http://www.seleniumhq.org/

atrium isimle bir ara programlar çok güzel android testleride yapabiliyormuş. Adroid sdk emulatorunun çok yavaş olduğu ile ilgili bir ayrındı öğrendim bunun için bir intel driver kuruluyormuş.

Bende uyanan en önemli intiba. Test otomasyonu ciddi bir işmiş dedim.

İyi çalışmalar.

 



Mvc Architectural poster

clock Şubat 5, 2014 15:20 by author OzgurOzvaris

Değerli Arkadaşlar,

Biliyorsunuz kuş bakışı önemlidir. Eğer MVC ye kuş bakışı bakmak isterseniz bu resimler faydalı olacaktır kanaatindeyim.

Kaynak

http://saulius.sunauskas.com/2013/10/14/understanding-asp-net-mvc-request-processing-pipeline-visually/

http://www.dotnet-tricks.com/Tutorial/mvc/TbR0041112-Asp.net-MVC-Request-Life-Cycle.html

asp_net_mvc_poster.zip (458.13 kb)

 

 

 



Aspx te tüm kullanıcıların session verilerini okumak

clock Ağustos 30, 2013 17:55 by author OzgurOzvaris

Değerli arkadaşlar,

Bütün session verisi üzerinde işlem yapmanız gerekebilir. Bu konu ile ilgili güzel bir çalışma buldum.

Önce Kaynak

http://weblogs.asp.net/imranbaloch/archive/2010/04/05/reading-all-users-session.aspx

Aslında kaynak çok güzel anlatmış. Okumak istediğiniz session verisi için

object obj = typeof(HttpRuntime).GetProperty("CacheInternal", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null, null);
object[] obj2 = (object[])obj.GetType().GetField("_caches", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj);
for (int i = 0; i < obj2.Length; i++)
{
    Hashtable c2 = (Hashtable)obj2[i].GetType().GetField("_entries", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj2[i]);
    foreach (DictionaryEntry entry in c2)
    {
        object o1 = entry.Value.GetType().GetProperty("Value", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(entry.Value, null);
        if (o1.GetType().ToString() == "System.Web.SessionState.InProcSessionState")
        {
            SessionStateItemCollection sess = (SessionStateItemCollection)o1.GetType().GetField("_sessionItems", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(o1);
            if (sess != null)
            {
                if (sess["User"] != null)
                {
                    Label1.Text += sess["User"] + " is Active.<br>";
                }
            }
        }
    }
}

Vb için 

Dim obj As Object = GetType(HttpRuntime).GetProperty("CacheInternal", BindingFlags.NonPublic Or BindingFlags.Static).GetValue(Nothing, Nothing)
Dim obj2 As Object() = DirectCast(obj.GetType().GetField("_caches", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(obj), Object())
For i As Integer = 0 To obj2.Length - 1 Step 1
    Dim c2 As Hashtable = DirectCast(obj2(i).GetType().GetField("_entries", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(obj2(i)), Hashtable)
    For Each entry As DictionaryEntry In c2
        Dim o1 As Object = entry.Value.GetType().GetProperty("Value", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(entry.Value, Nothing)
        If o1.GetType().ToString() = "System.Web.SessionState.InProcSessionState" Then
            Dim sess As SessionStateItemCollection = DirectCast(o1.GetType().GetField("_sessionItems", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(o1), SessionStateItemCollection)

            If Not sess Is Nothing Then
                If Not sess("User") Is Nothing Then
                    //Label1.Text = sess("User")
                End If
            End If

        End If

    Next
Next

Kodda gözüktüğü üzere bütün kullanıcıların Session daki User datalarını listeleyebiliyoruz.

 İyi çalışmalar.



Html olarak word dökümanı çıktısı oluşturmak

clock Mart 28, 2013 15:24 by author OzgurOzvaris

Değerli Arkadaşlar,

daha önceki uygulamamızda excel ile ilgili bir kaç örnek vermıştim.

http://www.ozgurozvaris.com/post/2013/02/07/MVC-Excel-Export.aspx

http://www.ozgurozvaris.com/post/2013/02/18/MVC-Excel-Export-2.aspx

Şimdi ise benzer bir şekilde word dokümanı nasıl alınır ona bakalım.

Kaynak

http://www.shotdev.com/asp/asp-word/asp-word-response-contenttype-application-vnd-ms-word/

<%@ Language=VBScript %>
<%
Option Explicit
Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-word"
Response.AddHeader "Content-Disposition", "attachment; filename = MyDoc.doc"
%>
<html>
<head>
</head>
<body>

<table width="600" border="1">
<tr>
<th width="91"> <div align="center">CustomerID </div></th>
<th width="98"> <div align="center">Name </div></th>
<th width="198"> <div align="center">Email </div></th>
<th width="97"> <div align="center">CountryCode </div></th>
<th width="59"> <div align="center">Budget </div></th>
<th width="71"> <div align="center">Used </div></th>
</tr>
<%

%>
<tr>
<td><div align="center"><%="5"%></div></td>
<td><%="test"%></td>
<td><%="test"%></td>
<td><div align="center"><%="test"%></div></td>
<td align="right"><%="test"%></td>
<td align="right"><%="test"%></td>
</tr>

</table>

</body>
</html>


Hakkımızda  AboneOl 

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

Month List

RecentPosts

Sign In