12

我正在尝试实现一个简单的 ajaxtoolkit 文件上传控件,每次单击“上传”时,我得到的都是一个错误。我尝试在“AjaxFileUpload1_UploadComplete”函数中放置断点,但它甚至不会被触发..(可能是因为上传还没有完成?)我应该怎么做才能让它工作?

这是错误: 在此处输入图像描述

这是我的aspx:

 <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

       <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server"
            onuploadcomplete="AjaxFileUpload1_UploadComplete" ThrobberID="myThrobber" MaximumNumberOfFiles="10" AllowedFileTypes="jpg,jpeg"/>

    </div>
    </form>

这是背后的功能:

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        string id = "038191904";
        Directory.CreateDirectory(Server.MapPath("~/App_Data/" + id + "/scanned_docs/"));
        string filePath = "~/Member_Data/" + id + "/images/";
        string path = filePath + e.FileName;
        AjaxFileUpload1.SaveAs(Server.MapPath(filePath) + e.FileName);

        //db1.insert_pic_slide(id, path);

    }
4

2 回答 2

28

这发生在我身上,我做了两件事来解决它:

1) 更新您网站的 web.config 文件以包含以下条目:

<system.web>
  <httpHandlers>
    <add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
  </httpHandlers>
</system.web>
<system.webServer>
  <handlers>
    <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
  </handlers>
</system.webServer>

2)如果您要上传的页面位于具有自己的 web.config 且具有拒绝匿名授权规则的文件夹中,请确保为 AjaxFileUploadHandler 添加允许,如下所示:

<location path="AjaxFileUploadHandler.axd">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
于 2013-06-11T19:54:17.443 回答
0

只需为 AjaxFileUpload 控件添加此故障排除建议。如果您按照本页的建议添加了所有 web.config 语句,但在上传时仍然出现错误,请将 AjaxFileUpload 控件替换为 Ajax AsyncFileUpload 控件。两者之间的代码使用起来几乎相同,只需一分钟即可将它们换掉。

AjaxFileUpload 捕获错误,很难找到上传问题的真正原因。AsyncFileUpload 将引发实际错误。

我花了一个下午的时间在 AjaxFileUpload 上的论坛中挖掘看起来像是目录权限/临时文件夹问题的问题。我实际上有一个数据库错误,在我切换到 AsyncFileUpload 并遇到真正的问题后 15 分钟我能够修复它。

我在 FireFox 中调试时 AjaxFileUpload 抛出的错误是:

ajaxfileupload 错误引发上传完成事件并开始新的上传

并且 IIS 错误是错误 500。

请记住,这只是一个数据库错误。我在本地添加了一个我忘记添加到托管数据库的列,因此它对我来说在本地工作,但是在我部署时在托管服务器上抛出了一个错误。

接近一整天的工作应该需要 15 分钟才能解决。

于 2020-02-25T16:08:44.153 回答