我写了一个带有WCF后端的ASP.Net网站。该网站的一个功能是它允许用户下载从WCF服务流式传输的文件。
ASP.Net项目中的web.config文件在绑定中设置了最大文件大小(maxBufferSize和maxReceivedMessageSize)。要阻止用户下载超过此大小的文件,我需要根据web.config文件中的最大文件大小检查文件大小,我该如何处理?
我已经发现了binding.CreateBindingElements(),但我不确定如何首先获取绑定的实例。
编辑:绑定详情如下:
<binding name="BasicHttpBinding_IC_Server" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
编辑:WCF服务有一个方法,将文件作为流返回。 ASP.Net网页获取文件,将其存储在内存流中,然后将其作为字节数组返回给用户。
如果文件太小,我会收到此错误:
The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
提高缓冲区大小会修复它,但我宁愿通过将文件大小与maxBufferSize进行比较来避免此错误。
答案 0 :(得分:0)
终于成功完成了自己的工作。
sr
是服务参考:
System.ServiceModel.Description.ServiceEndpoint endpoint = sr.Endpoint;
System.ServiceModel.Channels.BindingElementCollection elements =
Endpoint.Binding.CreateBindingElements();
long size = elements.Find<System.ServiceModel.Channels.TransportBindingElement>().MaxReceivedMessageSize;