Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Duyuru
Bu makalede açıklanan üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft bu ürünlerin performans veya güvenilirliğiyle ilgili hiçbir garanti vermemektedir.
Response.WriteFile yöntemi büyük bir dosyayı karşıdan yüklemeye çalıştığınızda yükleme yanıt vermeyebilir ve sonra aşağıdaki hata iletilerinden birini alabilirsiniz:
Sayfa görüntülenemiyor
-VEYA-
Sunucu Uygulaması Kullanılamıyor
Bu Web sunucusunda erişmeye çalıştığınız Web uygulaması şu anda kullanılamıyor. Lütfen isteğinizi yeniden denemek için Web tarayıcınızdaki "Yenile" düğmesine basın.
Yönetici notu: Bu özel istek başarısızlık nedeninin ayrıntıları bir hata iletisi, web sunucusu sistem olay günlüğünde bulunabilir. Ne bu hata oluşmasına neden bulmak için bu günlük girdisi gözden geçirin.
Ayrıca, uygulama olay günlüğüne aşağıdaki iletiyi alabilirsiniz:
Aspnet_wp.exe (veya Microsoft ınternet ınformation Services [IIS] 6. 0'da çalışan uygulamalar için W3wp.exe) beklenmedik biçimde durdu.
Bu işlem sırasında Web sunucusu bellek kullanımını bir artış görebilirsiniz.
Web sunucusu bilgisayarın donanım yapılandırmasına başarıyla karşıdan yükleyebileceğiniz en büyük dosya boyutunu belirler. ASP.NET çalışan işleminin (Aspnet_wp.exe veya ınternet ınformation Services 6.0 [IIS] çalışan uygulamalar için W3wp.exe), dosya karşıdan yükleme isteği çalıştığında, dosya yükleme iletişim kutusu görüntülenir. Microsoft ınternet ınformation Services işlem için (ınetinfo.exe veya Dllhost.exe) veri göndermek ASP.NET alt işlemi başlatır. Tamam ' ı tıklatın, için beklemez.
Bilgisayarın yapılandırmasına bağlı olarak, IIS işlem verileri işlemek veya verileri bellekte arabelleğe. Dosya büyük olduğunda, verileri bellekte bu iki işlem arasında iletişim sırasında arabelle?e. Sunucudaki bellek kullanımı bu bir artışa neden olabilir. Web sunucusu bellek kısıtlamalar nedeniyle bu hata oluşur.
Bu soruna geçici bir çözüm bulmak için <a0></a0>, aşağıdaki yöntemlerden birini kullanın:
Küçük bölümlerini verileri almak ve verileri, çıkış akışı karşıdan taşıyın. Aşağıdaki kod, bunun nasıl yapılacağını gösterir.
Önemli Derleme</a0> öğesinin <a2>debug</a2> özniteliği değeri ASP.NET uygulamanızın Web.config dosyasında false olarak ayarladığınızda, Server.ScriptTimeout özelliği, dosya karşıdan yükleme boyutu için uygun bir değere ayarlamalısınız. Varsayılan olarak, Server.ScriptTimeout değeri 90 saniye olarak ayarlanır. Hata ayıklama özniteliği true olarak ayarlandığında, ancak Server.ScriptTimeout değeri çok büyük bir için 30,000,000 saniye ayarlanır. Geliştirici olarak, bu davranışı ASP.NET Web uygulamanızın üzerinde etkisi bilmeniz gerekir.
Ayrıca, aşağıdaki kodu FileStream Oluşturucusu ile kullanılan parametre değerleri bilmelisiniz. Belirtilen numaralandırma değerleri, sağlanan işlevsellik hakkında önemli bir etkisi olun. Daha fazla bilgi için <a0>REFERENCES</a0> bölümündeki <a2>FileStream</a2> bağlantısına bakın. Visual Basic .NET koduFarklı System.IO.Stream
Dim iStream As System.IO.Stream
' Buffer to read 10K bytes in chunk:
Dim buffer(10000) As Byte
' Length of the file:
Dim length As Integer
' Total bytes to read:
Dim dataToRead As Long
' Identify the file to download including its path.
Dim filepath As String = "DownloadFileName"
' Identify the file name.
Dim filename As String = System.IO.Path.GetFileName(filepath)
Try
' Open the file.
iStream = New System.IO.FileStream(filepath, System.IO.FileMode.Open, _
IO.FileAccess.Read, IO.FileShare.Read)
' Total bytes to read:
dataToRead = iStream.Length
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename=" & filename)
' Read the bytes.
While dataToRead > 0
' Verify that the client is connected.
If Response.IsClientConnected Then
' Read the data in buffer
length = iStream.Read(buffer, 0, 10000)
' Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length)
' Flush the data to the HTML output.
Response.Flush()
ReDim buffer(10000) ' Clear the buffer
dataToRead = dataToRead - length
Else
'prevent infinite loop if user disconnects
dataToRead = -1
End If
End While
Catch ex As Exception
' Trap the error, if any.
Response.Write("Error : " & ex.Message)
Finally
If IsNothing(iStream) = False Then
' Close the file.
iStream.Close()
End If
Response.Close()
End Try
Visual C# .NET kod
System.IO.Stream iStream = null;
// Buffer to read 10K bytes in chunk:
byte[] buffer = new Byte[10000];
// Length of the file:
int length;
// Total bytes to read:
long dataToRead;
// Identify the file to download including its path.
string filepath = "DownloadFileName";
// Identify the file name.
string filename = System.IO.Path.GetFileName(filepath);
try
{
// Open the file.
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read,System.IO.FileShare.Read);
// Total bytes to read:
dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
// Read the bytes.
while (dataToRead > 0)
{
// Verify that the client is connected.
if (Response.IsClientConnected)
{
// Read the data in buffer.
length = iStream.Read(buffer, 0, 10000);
// Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length);
// Flush the data to the HTML output.
Response.Flush();
buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
//prevent infinite loop if user disconnects
dataToRead = -1;
}
}
}
catch (Exception ex)
{
// Trap the error, if any.
Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
//Close the file.
iStream.Close();
}
Response.Close();
}
DownloadFileName 100 megabayttan (MB) büyük olan bir dosya adını değiştirme.
-VEYA-
Dosyayı karşıdan yüklemek bu kullanıcı için bir bağlantı sağlar.
-VEYA-
Microsoft ASP 3.0 yüklemeleri için veya yazılım Artisans FileUp ASP ile.
-VEYA-
Dosyayı karşıdan yüklemek için bir ISAPI uzantısı'nı oluşturun.
Microsoft Visual Basic. NET'te veya, Microsoft Visual C# .NET, yeni bir Web uygulaması) projesi oluşturun. Varsayılan olarak, WebForm1.aspx oluşturulur.
Araç kutusundan, bir düğme nesnesi için WebForm1.aspx dosyasına sürükleyin.
Kod Görünümü'nde olay'ı açmak için düğme nesnesi çift tıklatın.
Aşağıdaki kodu Button1 tıklatın olayına yapıştırın.
Visual Basic .NET kodu
' Identify the file to download including its path.
Dim filepath As String = DownloadFileName
' Identify the file name.
Dim filename As String = System.IO.Path.GetFileName(filepath)
Response.Clear()
' Specify the Type of the downloadable file.
Response.ContentType = "application/octet-stream"
' Set the Default file name in the FileDownload dialog box.
Response.AddHeader("Content-Disposition", "attachment; filename=""" & filename & """")
Response.Flush()
' Download the file.
Response.WriteFile(filepath)
Visual C# .NET kod
// Identify the file to download including its path.
string filepath = DownloadFileName;
// Identify the file name.
string filename = System.IO.Path.GetFileName(filepath);
Response.Clear();
// Specify the Type of the downloadable file.
Response.ContentType = "application/octet-stream";
// Set the Default file name in the FileDownload dialog box.
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.Flush();
// Download the file.
Response.WriteFile(filepath);
DownloadFileName 100 MB'DEN büyük bir dosyanın adını değiştirin.
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:812406
(http://support.microsoft.com/kb/812406/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.