Я получаю IIS 405 Метод не разрешен - пытаюсь реализовать dropzone с помощью ajax POST

Я искал повсюду, и у всех, кажется, есть подобный ответ, но я попробовал их все и все еще не работает.

Я использую Dropzone для загрузки документов:

function UpdateFileList(dropzone) {      
  var files = $(dropzone).get(0).dropzone.getAcceptedFiles();
  var data = new FormData();
  for (var x = 0; x < files.length; x++) {
      data.append(files[x].name + '|' + files[x].filename + '|' + files[x].path + '|' + files[x].main, files[x]);
  }
  $.ajax({
      type: "POST",
      url: "/FileHandler.ashx",
      contentType: false,
      processData: false,
      data: data,
      success: function (result) {
          alert(result);
          if (dropzone === '#supportingDocumentDropzone') {
              $('#TextBox1').val(result);
          }

      },
      error: function () { }
  });

}

Его загрузка в порядке, но я получаю ответ от IIS с ошибкой HTTP 405.0 - Метод не разрешен.

У меня не установлен WebDav.

Вот мой web.config:

<handlers>    
  <remove name="WebServiceHandlerFactory-Integrated" />
  <add name="FileHandler" path="FileHandler.ashx" verb="*" type="FileHandler" preCondition="integratedMode" />
  <add name="LogoffHandler*" path="Logoff.aspx" verb="*" type="DotNetNuke.Services.Authentication.LogOffHandler, DotNetNuke" preCondition="integratedMode" />
  <add name="RSSHandler" path="RSS.aspx" verb="*" type="DotNetNuke.Services.Syndication.RssHandler, DotNetNuke" preCondition="integratedMode" />
  <add name="LinkClickHandler" path="LinkClick.aspx" verb="*" type="DotNetNuke.Services.FileSystem.FileServerHandler, DotNetNuke" preCondition="integratedMode" />
  <add name="CaptchaHandler" path="*.captcha.aspx" verb="*" type="DotNetNuke.UI.WebControls.CaptchaHandler, DotNetNuke" preCondition="integratedMode" />
  <add name="UserProfilePageHandler" path="User.aspx" verb="*" type="DotNetNuke.Services.UserProfile.UserProfilePageHandler, DotNetNuke" preCondition="integratedMode" />
  <add name="DnnImageHandler" path="DnnImageHandler.ashx" verb="*" type="DotNetNuke.Services.GeneratedImage.DnnImageHandler, DotNetNuke" preCondition="integratedMode" />
  <remove name="ExtensionlessUrl-Integrated-4.0" />
  <add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  <add name="SitemapHandler" path="Sitemap.aspx" verb="*" type="DotNetNuke.Services.Sitemap.SitemapHandler, DotNetNuke" preCondition="integratedMode" />
  <add name="ClientDependencyHandler" verb="*" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core" preCondition="integratedMode" />
  <add name="Telerik.Web.UI.WebResource" verb="*" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" preCondition="integratedMode" />
  <add name="Telerik.Web.UI.ChartHttpHandler" verb="*" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler, Telerik.Web.UI, Culture=neutral, PublicKeyToken=121fae78165ba3d4" />
</handlers>

А вот и мой FileHandler.ashx

Imports System
Imports System.Web
Imports System.Web.Services
Imports System.Web.Script.Serialization
Imports System.Collections.Generic
Imports System.IO

Public Class FileHandler : Implements IHttpHandler

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        Try
            If (context.User.Identity.IsAuthenticated) Then
                Dim fileName, filePath As String
                Dim ArrayFiles As New ArrayList

                If context.Request.Files.Count > 0 Then
                    Dim files As HttpFileCollection = context.Request.Files
                    For j As Integer = 0 To files.Count - 1
                        Dim file As HttpPostedFile = files(j)
                        fileName = file.FileName
                        filePath = context.Server.MapPath("~/temp/" & fileName)

                        'dont process if file already exists
                        Dim fileExists As Boolean = My.Computer.FileSystem.FileExists(filePath)
                        If fileExists = False Then
                            'fileName = context.Server.MapPath("~/photoserver/temp/" & fileName)
                            file.SaveAs(filePath)
                        End If
                        'return the json
                        ArrayFiles.Add("{name:""" + fileName.Remove(fileName.LastIndexOf(".")) + """,filename:""new"",path:""" + filePath.Replace("\", "\\") + """,main:""0""}")
                    Next
                End If

                Dim strFiles As String = Nothing
                For i As Integer = 0 To ArrayFiles.Count - 1
                    strFiles += ArrayFiles(i).ToString()
                    If i < ArrayFiles.Count - 1 Then
                        strFiles += ","
                    End If
                Next

                context.Response.ContentType = "text/plain"
                context.Response.Write("{""count"":[{total:" + ArrayFiles.Count.ToString + "}],""files"":[" + strFiles + "]}")
            End If
        Catch ex As Exception
            '
        End Try
    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property
End Class

Я буду очень признателен, если у кого-то есть идеи, что не так с этим.

Смотрите прикрепленные мои обработчики IIS:

введите описание изображения здесь

0 ответов

Другие вопросы по тегам