Я получаю 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: