2015-09-08 11 views
6

Sto tentando di inviare file di Excel di grandi dimensioni al servizio di restituzione (utilizzando la servicestack).Errore durante l'invio di file excel di grandi dimensioni (8mb) mediante HttpWebRequest al servizio di servicestack

Le applicazioni client e server (servizio Servicestack) sono distribuite su server diversi.

Sto usando seguente codice lato client per caricare il file Excel (formato 8 mb)

tratto da

http://www.codeproject.com/Articles/501608/Sending-Stream-to-ServiceStack

HttpWebRequest client = (HttpWebRequest)WebRequest 
       .Create(ConfigurationManager 
       .AppSettings["applicationUrl"] 
        + @"/servicename/" 
        + fileUpload.FileName 
        + @"/" + FileType + @"/" 
        + Utility.UserName + @"/" 
        + Utility.EmployerID + @"/" 
        + UploadedFrom); 

client.Method = WebRequestMethods.Http.Post; 

////the following 4 rows enable streaming 
    client.AllowWriteStreamBuffering = false; 
    client.SendChunked = true; 
    client.ContentType = "multipart/form-data;"; 
    client.Timeout = int.MaxValue; 
    // client.KeepAlive = false; 
    //client.ProtocolVersion = HttpVersion.Version10; 
//client.ContentLength = 0; 
//client.Timeout = Timeout.Infinite; 
//client.AllowWriteStreamBuffering = true; 
Stream stream = fileUpload.InputStream; 

if (stream.CanRead) 
{ stream.Copy(client.GetRequestStream()); 
} 

    var response = new StreamReader(client.GetResponse().GetResponseStream()).ReadToEnd(); 

sopra codice funziona bene quando il file da caricare è 2-3 MB. genera l'errore quando la dimensione del file è di circa 8 MB.
durante il debug mi dà seguente errore

System.Net.WebException was caught 
    HResult=-2146233079 
    Message=The remote server returned an error: (500) Internal Server Error. 
    Source=System 
    StackTrace: 
     at System.Net.HttpWebRequest.GetResponse() 
     at Myproject.Web.Controllers 
        .Employer.FileUploadController 
        .Upload(FileUploadViewModel fileUploadViewModel 
     ,HttpPostedFileBase fileUpload 
     ,String DataFileType 
     ,String UploadedFrom) 
    in d:\MyProject\projNewArch\Controllers\Employer\FileUploadController.cs:line 262 
    InnerException: 

Ho provato a cambiare i valori di regolazione che possono essere viste come collegato.

Quale potrebbe essere il problema? Please help

Aggiornamento 1: ho IIS 8.5 sul server, quindi penso che la dimensione del file (8mb) potrebbe non essere il problema. Devo ancora aggiungere alcune impostazioni in web.config per consentire l'invio di file di grandi dimensioni su POST

AGGIORNAMENTO 2: trovata la soluzione. L'aggiunta di maxAllowedContentLength e maxRequestLength fa il trucco. Controllare il collegamento fornito da Smartdev nella sezione commenti

+1

Questo link potrebbe essere rilevante: http://stackoverflow.com/questions/2880722/is-http -post-limitless – Ulric

+1

'(500) Errore interno del server' è necessario esaminare le * tracce * del server e eseguire il debug del server * *. –

+0

@ulric Ho aggiornato la qustion. pensi che potrebbe essere il problema? – amol

risposta

1

È ancora necessario modificare il file web.config. Esso dovrebbe essere simile a questo:

<system.webServer> 
<security> 
    <requestFiltering> 
    <requestLimits maxAllowedContentLength="10485760" /> 
    </requestFiltering> 
</security> 

questo vi permetterà di caricare fino a 10 MB