1>Ein Freund hat heute eine Frage gestellt:
Warum tritt kein Fehler auf, wenn die Dateisteuerung zum Lesen der Pfade von Bildern, Dokumenten und anderen Dateien verwendet wird, beim Lesen von Videodateien (z. B. RMVB usw.) jedoch ein Fehler, dass die Seite nicht angezeigt werden kann?
Der Codeausschnitt lautet wie folgt:
private void btnUpFiles_Click(object sender, System.EventArgs e)
{
string pathName=this.File1.PostedFile.FileName.ToString();
Response.Write(pathName);
}
2>Beginnen Sie mit der Lösung des Problems:
Ich dachte, es gäbe ein Problem beim Abrufen der Pfadzeichenfolge, also fing ich zuerst den Pfad und den Dateinamen ab, dann die Dateierweiterung und speicherte sie als Zeichenfolgen, aber es gab immer einen Fehler. Der Codeausschnitt lautet wie folgt:
string fullname=this.File1.PostedFile.FileName.ToString();//Den vollständigen Pfad abrufen
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//Ermitteln Sie den Pfad und den Dateinamen und entfernen Sie das Dateisuffix
Session["firstname"]=firstname;//In einer Sitzung speichern
char [] spliter={'.'};//Das Trennzeichen, das zum Teilen der Zeichenfolge verwendet wird
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//Jeden Teil der vollständigen Pfadaufteilung im Array speichern
Session["lastname"]=fileName[fileName.Length-1];// Speichern das letzte Element (Namenssuffix) im Array als Sitzung
Response.Redirect("test.aspx");//Ich möchte es zum Testen an diese Seite übergeben.
Die obige Methode schlägt immer noch fehl und die Fehlerursache scheint überhaupt nichts mit Zeichenfolgen zu tun zu haben.
3>Netizen „@@“ schlug vor, dass es sich um ein httpRuntime-Problem handelte (danke):
Lösung des Problems: Fügen Sie den folgenden Code zu <system.web></system.web> in web.config hinzu:
<httpRuntime ExecutionTimeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>
4>Erklärung aus MSDN:
httpRuntime ist die Konfiguration der HTTP-Laufzeiteinstellungen von asp.net, um zu bestimmen, wie Anforderungen an asp.net-Anwendungen verarbeitet werden sollen.
„executionTimeout“: Gibt das maximal zulässige Zeitlimit für die Ausführung der Anforderung in Sekunden an
maxRequestLength: Gibt die maximale Datei-Upload-Größe an, die von ASP.NET unterstützt wird. Dieses Limit kann verwendet werden, um Denial-of-Service-Angriffe zu verhindern, die dadurch verursacht werden, dass Benutzer eine große Anzahl von Dateien an den Server weiterleiten. Die angegebene Größe ist in KB. Der Standardwert ist 4096 KB (4 MB).
useFullyQualifiedRedirectUrl: Gibt an, ob die Client-Umleitung vollständig qualifiziert ist (im Format „ http://server/path “, das für einige mobile Steuerelemente erforderlich ist) oder ob stattdessen eine relative Umleitung an den Client gesendet wird. Bei „True“ werden alle Weiterleitungen, die nicht vollständig qualifiziert sind, automatisch in das vollständig qualifizierte Format konvertiert. false ist die Standardoption.
minFreeThreads: Gibt die Mindestanzahl freier Threads an, die zum Ausführen neuer Anforderungen zulässig sind. ASP.NET hält eine bestimmte Anzahl von Threads für Anforderungen frei, für deren Verarbeitung zusätzliche Threads erforderlich sind. Der Standardwert ist 8.
minLocalRequestFreeThreads: Gibt die Mindestanzahl freier Threads an, die von ASP.NET verwaltet werden und neue lokale Anforderungen ausführen dürfen. Diese Anzahl von Threads ist für eingehende Anfragen vom lokalen Host reserviert, falls einige Anfragen während ihrer Verarbeitung Unteranfragen an den lokalen Host stellen. Dies vermeidet mögliche Deadlocks, die durch rekursives erneutes Betreten des Webservers verursacht werden.
appRequestQueueLimit: Gibt die maximale Anzahl von Anforderungen an, die ASP.NET für die Anwendung in die Warteschlange stellt. Anfragen werden in die Warteschlange gestellt, wenn nicht genügend freie Threads zur Bearbeitung der Anfrage vorhanden sind. Wenn die Warteschlange den in dieser Einstellung angegebenen Grenzwert überschreitet, werden eingehende Anfragen mit der Fehlermeldung „503 – Server zu beschäftigt“ abgelehnt.
enableVersionHeader: Gibt an, ob ASP.NET einen Versionsheader ausgeben soll. Microsoft Visual Studio 2005 verwendet diese Eigenschaft, um die aktuell verwendete Version von ASP.NET zu ermitteln. Für Produktionsumgebungen ist diese Eigenschaft nicht erforderlich und kann deaktiviert werden.