【问题标题】:AjaxFileUpload not working in iis 7.5 and LaterAjaxFileUpload 在 iis 7.5 及更高版本中不起作用
【发布时间】:2014-05-07 12:42:33
【问题描述】:

我正在使用 AjaxFileUpload 控件一次上传多个文件并实现拖放功能。它不适用于 IIS7.5 及更高版本。

这是我的代码:

.aspx 页面:

             <body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager2" runat="server">
</asp:ToolkitScriptManager>
<table width="100%">
    <tr>
        <td width="15%" height="200px">
        </td>
        <td width="60%" height="200px">
            <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" OnUploadComplete="AjaxFileUpload1_UploadComplete"
                Height="200px" />                
        </td>
        <td width="15%" height="200px">
        </td>
    </tr>
</table>
<asp:Label ID="lblError" runat="server"></asp:Label>
</form>

.CS 代码:

       protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        try
        {
            string Path = ConfigurationManager.AppSettings["UploadPath"].ToString();
            string filePath = Path + Convert.ToString(e.FileName);
            AjaxFileUpload1.SaveAs(filePath);
        }
        catch (Exception ex)
        {
        }
    }

【问题讨论】:

  • 它在 IIS 7.5 中对我来说很好,你确定你的功能不会失败吗?放一个断点并逐行执行,可能您的函数无法检索 UploadPath,或者您的 iis 没有写入 UploadPath 位置的权限并且无法将文件保存在那里,也可能文件太大,尝试一个较小的测试
  • 它在调试应用程序时工作正常。发布到 loval 系统并通过 IIS 浏览后,上传不起作用。
  • 当您从 Visual Studio 文档路径运行调试它时,它具有完全访问权限。当您发布它时,它会转到另一个文件夹。如果“loval”的意思是“localhost”,那么它通常会转到C:\inetpub\wwwroot\YourWebsite,给予IIS 用户对c:\inetpub\wwwroot 的完全访问权限。 IIS 用户可以是 IUSR 或 IUSER 或 NETWORK_USER 或 ASP.NET 或类似的,浏览所有用户并找到其中一个(或更多)并授予他们完全访问权限
  • 如果您不介意可以分享您的代码
  • 我刚刚测试了你的,仅此而已。您的代码看起来不错,我认为这是权限问题

标签: asp.net ajax file-upload


【解决方案1】:

我们遇到了同样的问题。

当我们将网站从 Framework v2 更新到 v4 时,控件停止工作。

我们在“经典”模式下使用池,这就是问题所在,如果我们将池的模式更改为“集成”,问题就会消失并且控制工作正常。

由于我们无法更改池模式,我们去寻找另一种解决方案...我们找到了!!!

我们将选项 preCondition="integratedMode" 添加到处理程序在 Web.Config 中的注册和 问题已解决! :)

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
        <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" preCondition="integratedMode"/>
    </handlers>
</system.webServer>

【讨论】:

  • 这应该在上面!
【解决方案2】:

将以下行添加到您的 web.config:

<configuration>
  <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>
</configuration>

【讨论】:

  • 你不能将 httpHandlers 标签添加到 system.web,至少 Visual Studio 告诉我是这样的。
  • 可能是它的 .net 框架问题?或者您正在引用丢失的 dll?它对我来说很好......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多