System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。 Die vom Systemprotokoll geworfene Ausnahme ist in der folgenden Abbildung dargestellt:
Der Grund für die Ausnahme ist, dass das System, wenn ich den Stream speichere, den Stream über die Größe des Streams hinaus liest.
Verwenden Sie denselben Stream zweimal, um zwei Punkte zu notieren:
1. Stream speichert eine Position: Stream.Position, die die Position im aktuellen Strom darstellt, und jede Leseposition beginnt von dieser Position aus, und diese Position wird nach Abschluss der Lesung auf die letzte Leseposition gesetztBeim ersten Mal lese ich den gesamten Stream, die Position erreicht das Ende, und beim zweiten Mal kann ich den Inhalt nicht lesen.Du musst also den Kontext vor dem zweiten Lesen festlegen. Request.InputStream.Position=0;
2. Die using Anweisung kann für die erste Lesung nicht verwendet werden. Die Usinging-Anweisung fügt tatsächlich einen Try, schließlich einen Block hinzu, in dem die Dispose-Methode des Objekts ausgeführt wird. So enthält die zweite Lektüre keinen Inhalt.
Auflösungscode:
Bevor der Flow gespeichert wird, rufen Sie folgenden Code auf:
|