2016-06-20 12 views
0

Ich habe eine Website in Genexus mit einer Transaktion, die ein Uploadify-Steuerelement enthält, auf einem lokalen Tomcat-Server läuft, und es funktioniert gut mit kleinen Dateien, aber wenn ich versuche, ein größeres hochladen Eins (> 50 MB) scheint die Datei hochzuladen, kehrt dann aber zum Transaktionsbildschirm zurück.Genexus Uploadify arbeitet nicht mit großen Dateien

Ich habe einen Test mit den in Google Chrome enthaltenen Entwicklertools durchgeführt und festgestellt, dass beim Versuch, große Dateien hochzuladen, ein "500 - Interner Serverfehler" auftritt. Ein Klick auf die entsprechende Zeile in der Registerkarte „Netzwerk“ gibt dies:

HTTP Status 500 - 

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: java.lang.NoSuchMethodError: org.apache.commons.fileupload.DefaultFileItem.cleanup()V 
at com.genexus.webpanels.HttpContextWeb.cleanup(Unknown Source) 
at com.genexus.webpanels.GXWebObjectBase.doExecute(Unknown Source) 
at br.com.procempa.spm.cauge.texpedientessoliceventosalter.doExecute(texpedientessoliceventosalter.java:21) 
at com.genexus.webpanels.GXWebObjectStub.callExecute(Unknown Source) 
at com.genexus.webpanels.GXWebObjectStub.doPost(Unknown Source) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:420) 
at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) 
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
at java.lang.Thread.run(Unknown Source) 

com.genexus.webpanels.GXWebObjectStub.callExecute(Unknown Source) 
com.genexus.webpanels.GXWebObjectStub.doPost(Unknown Source) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:420) 
org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.28 logs. 

Apache Tomcat/5.5.28 

Suche auf einigen Websites, ich Vorschläge fanden die Anwendung des web.xml Hinzufügen des folgenden Tag in der <Servlet> Tag in tomcat-Verzeichnis bearbeiten /application-directory/WEB-INF/web.xml:

<multipart-config> 
    <max-file-size>1073741824</max-file-size> 
    <max-request-size>1073741824</max-request-size> 
    <file-size-threshold>0</file-size-threshold> 
</multipart-config> 

Und dann bearbeitet tomcat-Verzeichnis/conf/server.xml den Connector-Tag für Port 8080 wie folgt aussehen zu machen:

<Connector port="8080" maxHttpHeaderSize="4096" maxPostSize="1073741824" 
      maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
      enableLookups="false" redirectPort="8443" acceptCount="100" 
      connectionTimeout="600000" disableUploadTimeout="true" /> 

Und dann Tomcat neu gestartet, aber es gibt mir den gleichen Fehler. Fehle ich noch etwas?

Vielen Dank im Voraus!

BEARBEITEN: Eigentlich ist meine Anwendung eine Java-Version, und das verwendete Steuerelement ist kein echtes "Uploadify", es hat die Klasse "Image" und ist mit einem BLOB-Feld in der Datenbank verknüpft. Ist es nicht der Fall, den Feldtyp im Transaktionsformular zu ändern?

Antwort

0

Überprüfen Sie in Ihrem Formular die Uploadify Eigenschaft "Size Limit".

In web.config maxRequestLength in <system.web> und requestLimits maxAllowedContentLength in <security> überprüfen.

Beispiel:

<system.web> 
<httpRuntime requestValidationMode="2.0" executionTimeout="600" maxRequestLength="50000"/> 
</system.web> 

<system.webServer> 
<security> 
    <requestFiltering> 
    <hiddenSegments> 
    <add segment="PrivateTempStorage" /> 
    <add segment="private" /> 
    </hiddenSegments> 
    <requestLimits maxAllowedContentLength="50000000"/> 
    </requestFiltering> 
</security> 
</system.webServer>