質問: stream(c#)を最初にリセットする必要がありますか? c#のストリームについてはあまり知りません。今、ストリームリーダーに入れて読むストリームがあります。後で他のいくつかのメソッドでストリーム(同じストリームオブジェクト)を読み取る必要がありますが、今回はこのエラーが発生しますsystem.argumentexception was unhandled by user code message="stream was not readable." source="mscorlib" stacktrace: at system.io.streamreader..ctor(stream stream, encoding encoding, boolean detectencodingfrombyteordermarks, int32 buffersize) at system.io.streamreader..ctor(stream stream) at extracttitle(stream file) in :line 33 at grabwebpage(string webpath) in :line 62 at lambda_method(executionscope , controllerbase , object[] ) at system.web.mvc.actionmethoddispatcher.execute(controllerbase controller, object[] parameters) at system.web.mvc.reflectedactiondescriptor.execute(controllercontext controllercontext, idictionary`2 parameters) at system.web.mvc.controlleractioninvoker.invokeactionmethod(controllercontext controllercontext, actiondescriptor actiondescriptor, idictionary`2 parameters) at system.web.mvc.controlleractioninvoker.<>c__displayclassa.<invokeactionmethodwithfilters>b__7() at system.web.mvc.controlleractioninvoker.invokeactionmethodfilter(iactionfilter filter, actionexecutingcontext precontext, func`1 continuation) innerexception: だから、おそらく最後まで流れるストリームを読むことで考えています。その後、もう一度読み込もうとすると、ストリームの最後にあるため、このエラーが発生します。だから誰もこれにいくらか光を当てることができますか?ありがとう
回答: 特に streamreader の readtoend メソッドを使用してストリームを最後まで読み取る場合、 seek 最初に戻ります。これは次のように実行できます。streamreader sr = new streamreader(stream); sr.readtoend(); stream.seek(0, seekorigin.begin); //streamreader doesn't have the seek method, stream does. sr.readtoend(); // this now works