AjaxfileUpload错误

14

我正在尝试实现一个简单的ajaxtoolkit文件上传控件,但每次点击"上传"按钮时都会出现错误。我尝试在"AjaxFileUpload1_UploadComplete"函数中设置断点,但它甚至不会触发...(也许因为上传还没有完成?) 我应该怎么做才能使它工作呢?

这里是错误信息: enter image description here

这是我的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);

    }

你得到了什么错误? - Kevin Kunderman
我添加了一张图片,请检查编辑。 - Dvirski
如果我没记错的话,在UploadComplete事件触发之前,这个控件会将文件写入临时文件夹。确保你的IIS应用程序池所运行的账户对代码所在的虚拟目录具有写入权限。 - Garrison Neely
谢谢,但我该怎么做呢? - Dvirski
如果您无法在本地运行它,那可能不是问题所在——如果它在本地运行但在服务器上却不能运行,那就可能是原因。我建议从这里下载整个演示项目:http://ajaxcontroltoolkit.codeplex.com/SourceControl/latest#ReadMe.html - Garrison Neely
提供信息,这不是答案,但我已经在GitHub上向DevExpress提交了“死亡的红色错误”投诉,并引用了你的问题:https://github.com/DevExpress/AjaxControlToolkit/issues/573 - Westley Bennett
2个回答

29

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

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>

2
当我将这个添加到我的web.config文件中时,我会收到http错误500.23的提示:“检测到一个不适用于集成托管管道模式的ASP.NET设置。” - Ross Brasseaux
4
不平衡的话,您需要在<system.webserver>下添加<validation validateIntegratedModeConfiguration="false"/>。 - David Aleu
2
将这行添加到 system.webserver 解决了我的问题。我不确定为什么在示例网站的官方文档中没有提到。无论如何,谢谢! - Joe Stellato
伟大的,它起作用了。不知道微软的人为什么不能处理这样小的愚蠢事情。 - Milind Thakkar

0

在此提供AjaxFileUpload控件的故障排除建议。如果按照本页面推荐的所有web.config语句添加后,上传仍然出现错误,请将AjaxFileUpload控件替换为Ajax AsyncFileUpload控件。两者之间的代码几乎相同,只需要花费一分钟就可以完成替换。

AjaxFileUpload会捕捉错误,很难找到上传问题的真实原因。而AsyncFileUpload将抛出实际的错误。

我在AjaxFileUpload论坛上搜索了整个下午,看起来像是目录权限/临时文件夹问题。实际上,我有一个数据库错误,我在切换到AsyncFileUpload并遇到实际问题后,只花了15分钟就解决了这个问题。

当我在FireFox中进行调试时,AjaxFileUpload引发的错误是:

ajaxfileupload error raising upload complete event and start new upload

IIS错误是错误500。

请记住,这只是一个数据库错误。我在本地添加了一个列,但忘记在托管数据库中添加它,在本地可以正常工作,但在部署到托管服务器时会抛出错误。

整整一天的工作,本应该只需要15分钟来解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接