2009-08-12 8 views
2

Ich fragte mich, wie ich in der Lage wäre, eine kontinuierliche Antwort-Stream senden, ohne es schließlich zu schließen. Um meine Frage besser zu erklären, denken Sie an die ASP-Seite als Proxy, der einen Drittanbieter-Stream von einer anderen Quelle weiterleitet (Audio-Stream oder Video-Stream von einer anderen Quelle)ASP.net kontinuierliche Antwort-Stream

Offensichtlich Response.Write() oder Response.BinaryWrite () schränke mich auf eine vordefinierte Quelle ein.

Vielen Dank im Voraus.

Antwort

3

Sie können die Reaktionspufferung mit der BufferOuput-Eigenschaft des aktuellen Objekts HttpResponse deaktivieren.

+0

Danke für die Rückmeldung. Es gibt auch das Problem, die Antwort tatsächlich auf diese Weise auszugeben, da die vom Antwortobjekt bereitgestellten Methoden nur vordefinierte Byte-Arrays und dergleichen zulassen. Grundsätzlich würde ich zwei gleichzeitig laufende Objekte benötigen, eines, das der Leser sein würde und das andere, das den Inhalt schreibt, der vom Leser zum Ausgang gelesen wurde. – mtranda

1

Ich könnte mir vorstellen, deaktivieren Response Buffering oder mit Response.Flush() sollte regelmäßig den Trick tun.

Indem Sie einen IHttpHandler einrichten, stellen Sie nur sicher, dass Ihre Process() -Methode niemals ausgeführt wird, daher wird Ihre Anfrage auch nie enden.

+0

über Ihre constrain an eine vordefinierte Quelle benötigen Sie 1. von Strom einzurichten Lesen 2. Speichern von Schritt 1 –

+0

3. Schreiber Puffer Antwort (Binary) 4. bündig die Antwort 5. Wiederholung zu puffern Dank dafür. Ich habe gerade an Ken Browning geschrieben, dass zwei Objekte gleichzeitig ausgeführt werden müssen, und es schien für eine Webseite etwas übertrieben zu sein. Auf der anderen Seite frage ich mich, ob es so ist, wie du es erwähnt hast, dass es irgendwelche Pakete verlieren wird (da es ein Live-Stream ist), obwohl es nicht so ein großes Problem sein sollte, besonders wenn ich es tun sollte kleine Brocken. – mtranda

+0

Mit der WebClient- und OpenRead-Methode, die einen Stream zurückgibt, wird der eingehende Livestream gepuffert, bis Sie die Daten mit der Read() -Methode für den Stream entfernen. –

0

Zusätzlich zum Versuch Response.Buffer = false und Aufrufe wie Response.Flush(), vergewissern Sie sich, dass Sie beim Testen keinen Proxy Server/Http Debugger verwenden. Ich habe es nicht geschafft, dass das funktioniert, bis ich Fiddler heruntergefahren habe.