c# - AjaxControlToolkit AjaxFileUpload 无法上传 IIS 保留文件类型

标签 c# asp.net ajaxcontroltoolkit iis-8 jsajaxfileuploader

我正在/已经为我的公司编写了一个文件上传门户,它需要能够上传大量不同大小和数量的不同文件类型。我使用了 AJaxControlToolkit AjaxFileUpload 控件。

上传效果很好,除非我们上传的文件类型看起来像 IIS 保留文件类型。我们可以上传图片、整个非压缩文件夹、办公文档等。

当我尝试上传保留文件类型时,Firefox 开发人员工具返回服务器错误,“不允许文件扩展名”错误。这种情况发生在 .exe 文件和我们需要的 .STL 文件(在我们的例子中,这些文件用于 3d 打印)。

我们在应用程序级别、站点级别和服务器级别对 IIS 管理器进行了配置文件、处理程序映射、HTTP 响应 header 、MIME 类型配置和请求过滤,但似乎都不起作用。

最后一点信息是压缩文件似乎可以通过,但我们希望避免要求客户这样做。

IIS 8.5, C#.Net, Windows Server 2012 R2

如果您需要,我可以发布代码,但我很确定这是我们需要更改的服务器配置

感谢您的帮助。

华特

编辑: 下面是我的配置,其中包含修复程序。这是控件而不是服务器的白名单文件类型的问题。谢谢

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/>
  </configSections>
  <appSettings/>
  <ajaxControlToolkit additionalUploadFileExtensions="bmp,stl"></ajaxControlToolkit>
  <system.webServer>
    <handlers>
      <add name="aa2" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
    </handlers>  
  </system.webServer>
  <system.web>
    <compilation debug="true">
      <assemblies>
        <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
    <pages>
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
      </controls>
    </pages>
  </system.web>
</configuration>

最佳答案

您需要将 additionalUploadFileExtensions 属性添加到 Web.config 中的 ajaxControlToolkit 部分:

<ajaxControlToolkit additionalUploadFileExtensions="exe,stl" />

请引用这篇文章:https://github.com/DevExpress/AjaxControlToolkit/wiki/AjaxFileUpload-setup

关于c# - AjaxControlToolkit AjaxFileUpload 无法上传 IIS 保留文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215259/

相关文章:

c# - AppDomain 或每个实例的进程?

c# - 在模型中绑定(bind)两个表 - ASP.NET MVC Razor

c# - UpdatePanel 并将消息发布到其他控件

c# - yield 和 List.AsEnumerable 之间的区别

jquery - vb.net 网络服务

c# - 在 ASP.NET 中,对预检请求的响应未通过访问控制检查 : No 'Access-Control-Allow-Origin' header

c# - .Net Master Page Name Mangling 需要解决方法

asp.net - 覆盖 ASP.NET AJAX 控件工具包的 TabContainer 控件中的默认 CSS

c# - Ajax ComboBox 正确渲染 ListItems 但不显示

c# - 将任务作为要在异步方法 C# 中的循环内调用的参数传递