none
如何使用WCF在asp.net网站做大文件传输? RRS feed

  • 问题

  • 上传大文件失败:页面提示:

    HTTP 错误 404.13 - Not Found

    请求筛选模块被配置为拒绝超过请求内容长度的请求。

    <fieldset>

    最可能的原因:

    • Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值。
    </fieldset>

    <fieldset>

    可尝试的操作:

    • 确认 applicationhost.config 或 web.config 文件中的 configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength 设置。
    </fieldset>

    详细错误信息:

    模块    RequestFilteringModule
    通知    BeginRequest
    处理程序    PageHandlerFactory-Integrated-4.0
    错误代码    0x00000000
    请求的 URL    http://localhost:9259/FilesManage/SoftVersionUpdate_Edit.aspx?id=1
    物理路径    F:\Project\老版CAC选型软件\trunk\Source\Code\GreenWeb\GreenWeb\FilesManage\SoftVersionUpdate_Edit.aspx
    登录方法    尚未确定
    登录用户    尚未确定
    请求跟踪目录    C:\Users\361572\Documents\IISExpress\TraceLogFiles\GREENWEB(1)

    客户端加了配置的:

            <binding name="BasicHttpBinding_IUpLoadService"  closeTimeout="00:10:00"
              openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
              maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered"         
              >  

    然后server.web也加了:<httpRuntime maxRequestLength="102400" />

    服务端的配置:

              <binding name="BasicHttpBinding_IUpLoadService" maxReceivedMessageSize="2147483647" 
               messageEncoding="Text" transferMode="Streamed" sendTimeout="00:10:00"
              maxBufferSize="2147483647"  >
              </binding>

    然后service也加了:

            <endpoint binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUpLoadService"
              contract="BJ.WEB.WCF.IUpLoadService" />
            <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
              contract="IMetadataExchange" />

    server.web也加了:<httpRuntime maxRequestLength="102400" />

    可是就是出现这个问题,

    2016年12月8日 2:51

全部回复

  • 我来澄清一下我的理解,ASP.NET 网站上传大文件,使用WCF技术,服务器端接收大文件,保存在服务器中。

    那么有以下几个可能的原因,供您参考。

    1  客户端(ASP.NET)要上传大文件,必须增加 <httpRuntime maxRequestLength="102400" />

       maxRequestLength的单位是KB,值102400表示100M,如果上传的文件大于100M,文件仍旧过于大。

    2  客户端(ASP.NET)要上传大文件,因为文件过于大,需要设置更长的超时时间。

      httpRuntime executionTimeout="60"  表示60秒 

    <httpRuntime executionTimeout="60" maxRequestLength="951200"  / >

    3  HTTP 错误 404.13这个错误,常见的解决方案如下

    http://www.cnblogs.com/Peter-Zhang/archive/2011/09/17/2179509.html

    WCF的配置未发现问题。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年12月8日 5:29
  • WCF传输文件,参考这里

    https://www.codeproject.com/tips/862823/transfer-file-using-wcf

    https://www.codeproject.com/Articles/614028/Peer-to-Peer-File-Sharing-Through-WCF


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms


    2016年12月8日 5:31
  • 1.WCF限制设置好

    2.检查下ASP.NET 默认请求的好像是2M,修改为更大的设置即可。


    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    微软WCF技术群:166599314

    2017年6月5日 10:04
    版主