일부 파일을 수신 (업로드)하기 위해 HttpHandler를 작성했습니다. IIS 8에서 실행 중입니다. 내 코드는 작동하지만 매우 작은 파일 (< 1-2 MB)에만 적용됩니다. 큰 파일의 경우 코드가 충돌하기 때문에 예외가 발생하지 않고 "500 내부 서버 오류"메시지가 클라이언트로 전송됩니다.스트림 크기로 인해 HttpHandler에서 크래시가 발생했습니다.
내 코드는 다음과 같습니다
내 디버거를 집착 int bufferSize = 4096;
string parameterString;
using (var bs = context.Request.GetBufferlessInputStream(true))
using (var ms = new MemoryStream())
{
byte[] fileContents = new byte[bufferSize];
int charsRead = bs.Read(fileContents, 0, bufferSize);
while (charsRead > 0)
{
ms.Write(fileContents, 0, bufferSize);
charsRead = bs.Read(fileContents, 0, bufferSize);
}
parameterString = Encoding.UTF8.GetString(ms.ToArray());
}
그냥 마지막 줄에서 멈 춥니 다.
내 설정은 다음과 같습니다 : 내 마지막 줄이 문제가해야하는 이유를 이해하지 않는 한이 시점에서 잃었어요
<basicHttpBinding>
<binding name="XXXX" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="21474836470" maxBufferSize="2147483647" maxReceivedMessageSize="21474836470">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
</binding>
</basicHttpBinding>
? 다른가요?