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();
}
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 😉