Laden...

HttpDownloadHandler: Fehlerhafter Download bei Dateien ab 4MB

Erstellt von realProg vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.589 Views
R
realProg Themenstarter:in
95 Beiträge seit 2010
vor 11 Jahren
HttpDownloadHandler: Fehlerhafter Download bei Dateien ab 4MB

Hallo,

ich habe einen Downloadhandler mit dem Dateien von mobilen Clients abgerufen werden können.

Hier muss ich bemerken, dass es bei Dateien (ab ~4MB) immer wieder zu folgender Fehlermeldung, obwohl es teilweise auch funktioniert, kommt (im Log-File).:

Fehlermeldung:
2012-08-08 16:17:54,409 ERROR ApplicationLogger [(null)] - Application - FileUrl=..... bei System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
bei System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
bei System.Web.HttpResponse.Flush(Boolean finalFlush)
bei System.Web.HttpResponse.Flush()
bei .....GeneralDownloadHandler.ProcessRequest(HttpContext context)
2012-08-08 16:17:54,409 ERROR ApplicationLogger [(null)] - Application - Der Remotehost hat die Verbindung beendet. Fehlercode: 0x800703E3.
bei System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
bei System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
bei System.Web.HttpResponse.Flush(Boolean finalFlush)
bei System.Web.HttpResponse.Flush()
bei ....GeneralDownloadHandler.ProcessRequest(HttpContext context)

Liegt es am Code des Handlers, oder an der Verbindung?
Wo liegen die Probleme am Code?
Gibt es Alternativen die ich berücksichtigen kann?

Hier der Code des Handlers etwas gekürzt:


public void ProcessRequest(HttpContext context)
        {
            HttpResponse response = context.Response;
            HttpRequest request = context.Request;
            string fileUrl = request.Params["fileUrl"];

            if (String.IsNullOrEmpty(fileUrl))
            {
                LogHelper.Warning("FileUrl is null or empty");
                response.StatusCode = 400;
                PrintError(response);
                return;
            }

            try
            {
                // set content-header
                response.ContentType = Util.GetMIMEType(fileUrl);
                response.Clear();
                SharePointMethods spMethods;

                try
                {
                    spMethods = new SharePointMethods(ConfigurationHelper.SharepointUrl,
                        ConfigurationHelper.SharepointUser, ConfigurationHelper.SharepointPassword,
                        ConfigurationHelper.SharepointDomain);
                }
                catch (Exception ex)
                {
                    UpStateChecker.CouldNotAccessSharePoint();
                    throw ex;
                }
                UpStateChecker.CouldAccessSharePoint();

                string newFileUrl = fileUrl;
                string entrypoint = ConfigurationHelper.SharepointCustomerEntryPoint;
                string tFilename = fileUrl;

                // Get file from Sharepoint
                using (Stream ms = spMethods.GetFileForRelativeServerPath(
                    String.Format("/{0}/{1}", entrypoint, newFileUrl)))
                {
                    //set tFilenname...

                    response.AddHeader("Content-Disposition", "filename=" + tFilename);
                    response.BinaryWrite(Util.GetStreamBytes(ms));
                    response.Flush();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex.GetFullErrorMessage());
                response.StatusCode = 404;
                PrintError(response);
            }
            HttpContext.Current.ApplicationInstance.CompleteRequest();
        }

D
615 Beiträge seit 2009
vor 11 Jahren

Hallo realProg

Versuch mal in der web.config (welche den Service hostet) folgendes einzutragen:


<system.web>
    <httpRuntime maxRequestLength="2147483647" />
</system.web>

Beste Grüsse

Diräkt

Edit :
Service // Handler 😉