【问题标题】:AjaxfileUpload errorAjaxfile上传错误
【发布时间】:2023-03-20 20:25:01
【问题描述】:

我正在尝试实现一个简单的 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);

    }

【问题讨论】:

  • 你得到什么错误?
  • 我添加了一张图片,查看编辑
  • 如果我没记错的话,这个控件会在 UploadComplete 事件触发之前将文件写入临时文件夹。确保运行 IIS 应用程序池的帐户对运行代码的虚拟目录具有写入权限。
  • 谢谢,但我该怎么做呢?
  • 如果你不能让它在本地运行,那可能不是问题——如果它在本地运行但不在你的服务器上,这可能是原因。我建议从这里下载整个演示项目ajaxcontroltoolkit.codeplex.com/SourceControl/…

标签: c# asp.net


【解决方案1】:

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

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>

【讨论】:

  • 当我将它添加到我的 web.config 时,我收到 http 错误 500.23“已检测到不适用于集成托管管道模式的 ASP.NET 设置。”
  • 不平衡,需要在下添加
  • 将该行添加到 system.webserver 为我修复了它。我不确定为什么示例站点上的官方文档中没有。不过谢谢!
  • 伟人。有效。想知道为什么 MS 的人不能处理这么小的傻事
【解决方案2】:

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

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

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

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

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

而 IIS 错误是错误 500。

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

本应花 15 分钟才能解决的问题几乎要花一整天的时间来解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2018-05-06
    • 2023-03-23
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多