C# AjaxFileUpload按钮“上载”失败

C# AjaxFileUpload按钮“上载”失败,c#,asp.net,ajax,ajaxcontroltoolkit,C#,Asp.net,Ajax,Ajaxcontroltoolkit,我做了很多搜索,并尝试了许多不同的选择。我甚至没见过其他有类似问题的人 我将下面的代码放在我的页面中,元素在页面上反应良好。对于“ToolKitScriptManager”,我尝试了常规的和下面显示的两种。两者都不起作用 <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager> <asp:AjaxFil

我做了很多搜索,并尝试了许多不同的选择。我甚至没见过其他有类似问题的人

我将下面的代码放在我的页面中,元素在页面上反应良好。对于“ToolKitScriptManager”,我尝试了常规的和下面显示的两种。两者都不起作用

        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager>
        <asp:AjaxFileUpload ID="inpFileUpload" runat="server" OnUploadComplete="inpFileUpload_UploadComplete" MaximumNumberOfFiles="3" AllowedFileTypes="jpg,jpeg,doc,png" />
然而,它没有给我任何错误,也没有给我任何可能出错的信息。我遵循了我能找到的关于这个元素的每一个教程,没有一个能够解决这个问题

我按browse查找一个文件,选择一个/多个文件,一切正常,文件显示在上载列表中

但是,当我单击此AjaxFileUpload元素附带的“上载”按钮时,什么也没有发生。有时你可以在上传按钮上看到红色,但它会立即返回到“上传”蓝色样式。不上传所选文件,或者从我可以看出,当按下按钮时,它除了非常快速地改变按钮的外观外,什么都没有做

不确定我做错了什么,或者我是否遗漏了什么

更新


感谢Matthew Learn的帮助,有一个javascript错误控制台,当按下“上传”按钮时,返回未捕获的异常:无法启动上传,我无法为您解决问题,但我可以告诉您从何处开始

首先,您使用的是什么浏览器?这可能很重要,特别是如果你使用的是旧版本的IE

不过,在此之后,以下是一些使用和调试AJAX的技巧:

如果不起作用,第一步是检查Javascript错误控制台。在IE和Chrome中,按F12打开开发工具。在Firefox中,按Ctrl+Shift+J打开JS错误控制台。如果您使用的是Firefox,我建议您也使用扩展名和。 如果错误控制台中没有错误,请使用一个好的HTTP调试器/我喜欢的代理来确保您期望的AJAX请求是页面正在发出的AJAX请求。如果您还不太了解HTTP,这是开始学习的好方法。是的,你需要知道这些东西。 在多个浏览器中测试它,以查看它是否是特定于浏览器的问题。
我想您可能在web.config的以下部分中遗漏了这一点:


在链接中找到:

看起来我解决了它。这与我的请求有关。加载页面时查询字符串[id]。出于某种原因,它会重新加载页面并丢失返回null的QueryString,这反过来又会导致文件上传的一切混乱

当我指定一个硬编码变量作为QueryString[id]时,上传工作正常。但是,当保持正常以获取QueryString时,它会失败并返回null

我还没有弄清楚为什么它会抓取null,而不是我的id号,但我在id号中硬编码,上传工作几乎证实了这是一个问题

如果有人知道为什么我的QueryString在上传文件时返回null,那就太好了!哈哈

答复

所以做了一些研究,显然这是AjaxToolKit的问题,而不是我一直在做的任何事情。我下载了这些链接,并将DLL与更新的javascript代码一起使用,一切都开始正常工作

从我发现的情况来看,fileupload没有解析URL中已经放置的QueryString,因此它会用它需要的内容替换它们,并继续执行,不会出现许多错误


希望他们能得到更新版本。

在配置部分的web.config文件中添加以下行:

<configuration>
<system.webServer>
<handlers>
<add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" Type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</handlers>     
</system.webServer>`
</configuration>

我已经在chrome、IE和Firefox上试用过,并且有不同的版本。所有人都提出了同样的问题。在执行Ctrl+Shift+J热键时,感谢您让我知道这个命令并查看错误,它出现了以下未捕获的异常:无法启动上载。我相信AjaxFileUpload需要在web.config中配置一些东西才能工作。你已经设置好了吗?我已经在web配置中设置了AjaxToolKit,当我通过NuGet或手动将AjaxToolKit库添加到项目中时,它将其更改为以下内容,尽管在我所看到的所有教程中,我没有看到任何人提到必须在web.config中专门设置此特定元素才能工作的内容。我确实看到了这一点。但是,当我使用此命令时,它使整个站点发生500内部错误,导致无法访问任何内容。这是一个IIS windows身份验证网站。我的建议是从上面的示例站点复制AjaxFileUpload示例,查看它是否运行,然后添加您自己的带有AjaxFileUpload的页面,查看它是否仍然运行。在这之后,您需要找到差异并将它们从示例移到您的站点。我看到这两个文件之间的一个主要区别是源代码中的一个文件也有很多jquery/javascript链接。从wh
至少,我可以判断这些脚本是否像示例中那样显示图像,以显示上传工作。我在这个元素上找到的其他教程/帮助对jquery/javascript没有任何要求。你知道上传文件时是否需要这样做吗?因为我不想要一个图像显示或类似的东西。我只想把文件上传到请求的目标路径。我想你可以去掉JavaScript。但是,测试一下。取出它,运行页面。你还能上传文件吗?图像可能无法加载,但如果您仍然可以上载,您知道这并不重要。如果您无法在自己的项目中按原样运行从站点下载的示例站点,则您的环境可能存在一些问题。
<httpHandlers>
  <add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</httpHandlers>
<configuration>
<system.webServer>
<handlers>
<add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" Type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</handlers>     
</system.webServer>`
</configuration>