我正在尝试实现一个简单的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);
}
答案 0 :(得分:26)
这发生在我身上,我做了两件事来解决它:
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>
答案 1 :(得分:0)
只需为AjaxFileUpload控件添加此疑难解答建议。如果按照此页面上的建议添加了所有web.config语句,但在上传时仍然出现错误,请用Ajax AsyncFileUpload控件替换掉AjaxFileUpload控件。两者之间的代码几乎完全相同,只需一分钟即可将它们换出。
AjaxFileUpload捕获错误,很难找到上载问题的真正原因。 AsyncFileUpload将引发实际错误。
我花了整个下午的时间在AjaxFileUpload上的论坛中进行挖掘,以查找目录权限/临时文件夹的问题。实际上,我遇到了一个数据库错误,在交换到AsyncFileUpload并遇到真正的问题后,我能够修复15分钟。
在FireFox中调试时,AjaxFileUpload引发的错误是:
ajaxfileupload错误引发了上传完成事件并开始新的上传
并且IIS错误是错误500。
请记住,这只是一个数据库错误。我在本地添加了一列,但我忘记将其添加到托管数据库中,因此它对我来说在本地可用,但是在部署时在托管服务器上引发了错误。
需要花15分钟才能修复的工作将近一整天。