代码之家  ›  专栏  ›  技术社区  ›  skolima

为什么在ASP.NETMVC中文件上传失败?

  •  0
  • skolima  · 技术社区  · 16 年前

    Request.Files.Count == 0 ).

    正如你在下面看到的,它失败的地方是非常基本的。

    [Authorize]
    [AcceptVerbs(HttpVerbs.Put | HttpVerbs.Post)]
    [ValidateInput(false)]
    public int UploadScene(int sceneID, int tourID, string name, int number, PhotoType photoType)
    {
        SceneInfo scene;
        if (Request.Files.Count < 1) throw new InvalidOperationException("Image file not uploaded.");
        // process file...
    }
    

    看起来它可能是配置,但我不知道它可能是什么。我们在一个集群中运行(我们有4个web服务器),因此可能与此有关,但我正在针对单个服务器进行测试(我可以按名称隔离机器,并可以验证它是否正在处理我的请求)。我还确保它在自己的应用程序池中运行。我还应该检查什么?

    我们在服务器上使用IIS6和.NET3.5。

    2 回复  |  直到 16 年前
        1
  •  1
  •   hunter    16 年前

    你有没有试过用合适的方式包装你的表格 <表格> 标签?

    <% using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { @enctype = "multipart/form-data" })) { %>
    
        2
  •  1
  •   skolima    16 年前

    我查看了事件查看器,发现由于虚拟内存检查,应用程序池正在循环使用。我关掉了它,可以毫无问题地上传20多张图片。

    当然,这并不能解释为什么回收会导致文件上传立即失败。我的印象是,旧池将继续处理任何现有请求,直到它们完成或达到关闭时间限制(我们将其设置为10分钟,以便处理文件上载)。

    推荐文章