我已經寫了一個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>
我在這一點上失去了,因爲我不明白爲什麼我的最後一行應該是一個問題嗎? 這是別的嗎?