【问题标题】:AjaxControlToolkit AjaxFileUpload can't upload IIS Reserved File TypesAjaxControlToolkit AjaxFileUpload 无法上传 IIS 保留文件类型
【发布时间】:2017-07-20 12:49:10
【问题描述】:

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

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

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

我们已经在应用程序级别、站点级别和服务器级别的 IIS 管理器上使用了配置文件、处理程序映射、HTTP 响应标头、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>

【问题讨论】:

  • 只是好奇为什么 FireFox 开发者工具与这个问题有任何关系。文件是否可以上传到服务器? Firefox 问题是否阻止上传?
  • 没有。对困惑感到抱歉。我只是想提供所有我能提供的信息,所以我指的是我使用开发工具查看了错误,并且该错误告诉我正在发生的错误。

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


【解决方案1】:

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

<ajaxControlToolkit additionalUploadFileExtensions="exe,stl" />

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

【讨论】:

  • 非常感谢。我认为我们可能走在正确的道路上,但我不确定在配置中的哪个位置添加此行。除了添加的工具包处理程序和工具包控件外,我有一个简单的配置。我已将我的配置添加到最初的问题中。
  • 我通过使用您的输入进行一些网络搜索找到了它。发现我需要在配置中添加一个 configSections 部分,然后我可以添加你告诉我的行。非常感谢,因为我错误地认为这是服务器问题而引导对话。
  • 哇哇哇!!我对此永远感激不已。多年来一直使用此控件。然后一个人试图上传所有的东西一个bmp文件。 5小时后!!!我不能感谢你。至于地球上哪个星球简单地将 bmp 作为允许的文件类型不起作用?伙计,有时某个地方的某个人在非常坚硬的水泥地板上摔倒了太多次。谢谢!
【解决方案2】:

ajaxcontroltoolkit在web.config文件中的入口示例,请参考Sample web.config Ajax configuration

示例如下:

<configuration>
  <configSections>
    <section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/>
  </configSections>
  <ajaxControlToolkit
    useStaticResources="true"
    renderStyleLinks="false"
    htmlSanitizer="AjaxControlToolkit.HtmlEditor.Sanitizer.DefaultHtmlSanitizer, AjaxControlToolkit.HtmlEditor.Sanitizer"
    tempFolder="~/Temp"/>
  <location path="Temp">
    <system.webServer>
      <handlers>
        <clear/>
      </handlers>
      <modules>
        <clear/>
      </modules>
    </system.webServer>
  </location>
<system.web>

【讨论】:

  • 嗨!欢迎来到堆栈溢出。为了更好地帮助社区,通常鼓励在您的答案中包含链接的代码示例。这有助于其他人更容易找到它,如果链接失效,相关信息将永远保留在答案中。您能否将相关代码复制到您的答案中。谢谢。请参阅stackoverflow.com/help/how-to-answer 了解更多信息。
  • 这根本不能解决问题。它甚至不是远程关闭,而是绝对零零零来解决这个问题。这个问题有零零零与让控件工作有关。我在多个应用程序中使用了这个控件大约 7 年以上。简单的问题是,即使您在标记中放置 BMP 的允许控制类型,它也不起作用,并且会给您一些关于超出缓冲区长度的可怕错误。你发现你可以上传一个 1 gig 的海量文件。然而,尝试上传一个简单的小 BMP 文件会产生可怕的错误。下次?尝试阅读问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
相关资源
最近更新 更多