【问题标题】:exception of type 'System.Web.HttpException' while uploading file to server将文件上传到服务器时出现“System.Web.HttpException”类型的异常
【发布时间】:2020-01-28 17:34:20
【问题描述】:

我是 asp.net、ajax 和 c# 的新手。我正在尝试通过以下示例将图像保存在服务器上:

        <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    </head>
<body>
<form id="form1" runat="server">
        <input type="file" name="postedFile" />
        <input type="button" id="btnUpload" value="Upload" />
        <progress id="fileProgress" style="display: none"></progress>
        <hr />
        <span id="lblMessage" style="color: Green"></span>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript">
        $("body").on("click", "#btnUpload", function () {   
$.ajax({
                url: 'Handler.ashx',
                type: 'POST',
                data: new FormData($('form')[0]),
                cache: false,
                contentType: false,
                processData: false,
                success: function (file) {
                    $("#fileProgress").hide();
                    $("#lblMessage").html("<b>" + file.name + "</b> has been uploaded.");
                },
                xhr: function () {
                    var fileXhr = $.ajaxSettings.xhr();
                    if (fileXhr.upload) {
                        $("progress").show();
                        fileXhr.upload.addEventListener("progress", function (e) {
                            if (e.lengthComputable) {
                                $("#fileProgress").attr({
                                    value: e.loaded,
                                    max: e.total
                                });
                            }
                        }, false);
                    }
                    return fileXhr;
                }
            });
        });
        </script>
    </form>
</body>
</html>

添加通用处理程序:

    using System;
using System.IO;
using System.Net;
using System.Web;
using System.Web.Script.Serialization;

namespace RateEatPresentation
{
    /// <summary>
    /// Summary description for Handler
    /// </summary>
    public class Handler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            //Check if Request is to Upload the File.
            if (context.Request.Files.Count > 0)
            {
                //Fetch the Uploaded File.
                HttpPostedFile postedFile = context.Request.Files[0];

                //Set the Folder Path.
                string folderPath = context.Server.MapPath("~/UsersUploadedImages/");

                //Set the File Name.
                string fileName = Path.GetFileName(postedFile.FileName);

                //Save the File in Folder.
                postedFile.SaveAs(folderPath + fileName);

                //Send File details in a JSON Response.
                string json = new JavaScriptSerializer().Serialize(
                    new
                    {
                        name = fileName
                    });
                context.Response.StatusCode = (int)HttpStatusCode.OK;
                context.Response.ContentType = "text/json";
                context.Response.Write(json);
                context.Response.End();
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

但我得到异常“System.Web.dll 中发生了“System.Web.HttpException”类型的异常,但未在用户代码中处理”。我试图找到类似的东西,但不幸的是没有成功:

【问题讨论】:

  • ...additional information: Maximum request length exceeded - 看起来您已经掌握了所需的信息
  • 1 尝试使用小文件(1 个字符的文本文件) 2 如果可行,请搜索如何增加 ASP.Net 请求的最大请求长度
  • 这能回答你的问题吗? Maximum request length exceeded.

标签: c# jquery asp.net ajax


【解决方案1】:

图片可能太大了,你需要调整 web.config 来支持它们。 默认情况下 IIS 支持 4MB,您可以在 Web.config 中更改它

<system.web>
  <httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>

<system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="3000000000" />
      </requestFiltering>
   </security>
</system.webServer>

您必须更改 maxRequestLength 和 maxAllowedContentLength

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2016-07-24
    • 1970-01-01
    相关资源
    最近更新 更多