我在Azure 4.0中运行的ASP.NET 4.0 WebSite中实现了一个文件上载。对WCF服务的AJAX调用在本地工作正常,但是当我将其部署到Azure时,它失败并出现以下异常:
System.Web.HttpException 无法使用Request.BufferlessInputStream,因为已经读取了Request的内容。
在以下行:
HttpContext.Current.Request.GetBufferlessInputStream().Read(COMPLETEBufferedFileContent, 0, fileContentLength);
我的WebService-Method声明如下:
public Stream UploadProfileImage()
我的服务配置的一部分如下:
<bindings>
<customBinding>
<binding name="NiPDefaultCustomBinding"
openTimeout="00:01:00"
closeTimeout="00:01:00"
sendTimeout="00:01:00"
receiveTimeout="00:01:00" >
<sslStreamSecurity/>
<webMessageEncoding webContentTypeMapperType="XXXMapperForStreamInParamAndJSON, AssemblyX">
<readerQuotas maxArrayLength="16384"
maxBytesPerRead="4096"
maxDepth="32"
maxNameTableCharCount="16384"
maxStringContentLength="8192" />
</webMessageEncoding>
<httpsTransport maxBufferPoolSize="524288"
maxBufferSize="65536"
maxReceivedMessageSize="6291456"
transferMode="Streamed"
manualAddressing="true">
</httpsTransport>
</binding>
</customBinding>
我的XXXMapperForStreamInParamAndJSON重写了GetMessageFormatForContentType()并在此场景中返回WebContentFormat.Raw。
我知道我正在使用流式传输,但缓存了对流式传输没有意义的完整内容,但在这种情况下它没有问题,因为我用这种方法上传图像,我需要创建一个缩略图,所以我需要在缓冲区/内存中完成位图。
我不访问.Form,.Files或.InputStream或Request-Object中的任何其他相关内容,所以我不明白为什么调用在azure中失败,但在本地工作。一切都是100%相同。
有人可以帮助我吗?
拜托,有人给我一个提示吗?这个问题非常困难,我解决这个问题非常重要,因为否则我有一天无法上网。