Forum

asp.net dosya post ...
 
Bildirimler
Hepsini Temizle

asp.net dosya post etme sorunu !!!

2 Yazılar
2 Üyeler
0 Reactions
395 Görüntüleme
(@MennanSevim)
Gönderiler: 89
Estimable Member
Konu başlatıcı
 

Merhaba arkadaşlar,

 

uploadFile adında bir web servis metodum var.Benden base64str olarak parametre alıyo ve aldığı dosyayı belirtiğim adrese dosya olarak kaydediyo.Şöyle bir sorunum var 200 kb 250 kb sınırındaki herhangi bir dosyamı (zip,jpg,txt) upload etmede sıkıntı yaşamıyorum ama 300k'den daha büyük dosyalarda upload işlemi gerçekleştirdiğimde server üzerinde bir process sürekli işlem yapmaya çalışıyor.

 Bu process Image Name : w3wp.exe, UserName : ASP.Net v4.0, CPU : 50, Description : IIS Worker Process

 Sürekli olarak takılı kalıyor ve bazen CPU  %100'e vuruyor.

 Fakat :  

  Asp.Net sayfamdan post edemediğim 350 kb ve daha büyük boyutlu dosyaları web servisini browserden açıp,parametreleri(path,base64Str vs.) string olarak girdiğimde 1 saniyeden daha az bir sürede upload işlemini gerçekleştiriyor.

 

CODE :

 * encodedFile = Base64Str formatında

 string postString = string.Format("userName={0}&userVendor={1}&vendorKey={2}&base64FileStr={3}&guid={4}&fileName={5}",                                 "kadi", "şifre", "key", encodedFile, guid, strFilename);

                    string localHttpPostUrl = userGatewayAddress + "uploadFile";

                    ASCIIEncoding encoding = new ASCIIEncoding();

                    Stream newStream = null;

                    HttpWebResponse response = null;

                    Stream streamResponse = null;

                    StreamReader streamRead = null;

                   try

                    {

                        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(localHttpPostUrl);

                        request.ContentType = "application/x-www-form-urlencoded";

                        request.Method = "POST";

 

                        byte[] buffer = Encoding.UTF8.GetBytes(postString);

                        request.ContentLength = buffer.Length;

                        newStream = request.GetRequestStream();

                        newStream.Write(buffer, 0, buffer.Length);

                        newStream.Close();

                        response = (HttpWebResponse)request.GetResponse();

                        streamResponse = response.GetResponseStream();

                        streamRead = new StreamReader(streamResponse);

                        Char[] readBuffer = new Char[256];

                        ret = string.Empty;

                        int totalCharCount = 0; 

                        int count = streamRead.Read(readBuffer, 0, 256);

                        while (count > 0)

                        {

                            totalCharCount += count;

                            ret += new String(readBuffer);

                            count = streamRead.Read(readBuffer, 0, 256);

                        }

                        ret = ret.Substring(0, totalCharCount);

                        return ret;

                    }

                    catch (Exception x)

                    {

                        return x.Message;

                    }

            

 
Gönderildi : 07/09/2011 19:58

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba arkadaşlar,

 

uploadFile adında bir web servis metodum var.Benden base64str olarak parametre alıyo ve aldığı dosyayı belirtiğim adrese dosya olarak kaydediyo.Şöyle bir sorunum var 200 kb 250 kb sınırındaki herhangi bir dosyamı (zip,jpg,txt) upload etmede sıkıntı yaşamıyorum ama 300k'den daha büyük dosyalarda upload işlemi gerçekleştirdiğimde server üzerinde bir process sürekli işlem yapmaya çalışıyor.

 Bu process Image Name : w3wp.exe, UserName : ASP.Net v4.0, CPU : 50, Description : IIS Worker Process

 Sürekli olarak takılı kalıyor ve bazen CPU  %100'e vuruyor.

 Fakat :  

  Asp.Net sayfamdan post edemediğim 350 kb ve daha büyük boyutlu dosyaları web servisini browserden açıp,parametreleri(path,base64Str vs.) string olarak girdiğimde 1 saniyeden daha az bir sürede upload işlemini gerçekleştiriyor.

 

CODE :

 * encodedFile = Base64Str formatında

 string postString = string.Format("userName={0}&userVendor={1}&vendorKey={2}&base64FileStr={3}&guid={4}&fileName={5}",                                 "kadi", "şifre", "key", encodedFile, guid, strFilename);

                    string localHttpPostUrl = userGatewayAddress + "uploadFile";

                    ASCIIEncoding encoding = new ASCIIEncoding();

                    Stream newStream = null;

                    HttpWebResponse response = null;

                    Stream streamResponse = null;

                    StreamReader streamRead = null;

                   try

                    {

                        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(localHttpPostUrl);

                        request.ContentType = "application/x-www-form-urlencoded";

                        request.Method = "POST";

 

                        byte[] buffer = Encoding.UTF8.GetBytes(postString);

                        request.ContentLength = buffer.Length;

                        newStream = request.GetRequestStream();

                        newStream.Write(buffer, 0, buffer.Length);

                        newStream.Close();

                        response = (HttpWebResponse)request.GetResponse();

                        streamResponse = response.GetResponseStream();

                        streamRead = new StreamReader(streamResponse);

                        Char[] readBuffer = new Char[256];

                        ret = string.Empty;

                        int totalCharCount = 0; 

                        int count = streamRead.Read(readBuffer, 0, 256);

                        while (count > 0)

                        {

                            totalCharCount += count;

                            ret += new String(readBuffer);

                            count = streamRead.Read(readBuffer, 0, 256);

                        }

                        ret = ret.Substring(0, totalCharCount);

                        return ret;

                    }

                    catch (Exception x)

                    {

                        return x.Message;

                    }

            

Merhaba,

  <system.web>
   <!-- 100 KB Max POST size -->
   <httpRuntime maxRequestLength="100"/>
</system.web>

  http://support.microsoft.com/kb/832878

 

Saygılar,

 

 
Gönderildi : 08/09/2011 14:12

Paylaş: