http error 405 метод не разрешен ошибка с web.API

Я знаю, что я не первый, кто столкнулся с этим, но я испробовал все предложенные исправления и все еще не могу заставить его работать. Я хочу использовать глаголы DELETE и PUT со своими службами web.API и DNN 7.

Вот мой код для службы:

    routeManager.MapHttpRoute(moduleName, "deleteproduct", "{controller}/{action}/{ID}", New String() {"Krisis.Modules.KrisisStore.Services.Controllers"})

    ' DELETE: /deleteproduct/
    <HttpDelete> _
    <ActionName("deleteproduct")> _
    <ValidateAntiForgeryToken> _
    Public Function DeleteProduct_ById_Full(ID As Integer) As HttpResponseMessage
        Try
            ...
        End Try

    End Function

Вот мой вызов ajax (используя Knockout.js для моей модели просмотра):

// ****** CONFIRM DELETE FUNCTION ************************************************** 
this.confirmDelete = function () {

    //delete product web.Api url
    var sURL = "http://" + window.location.hostname + "/DesktopModules/KrisisStore/api/ProductService/deleteproduct/" + self.selectedProduct().ProductId;

    jQuery.ajax({
        type: "DELETE",
        url: sURL,
        success: function (response) {

            alert('Product Removed');

        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert("status: " + xhr.status + "\n" + thrownError);
            //alert('There was an error');
        }
    });

    $('#DeleteModal').foundation('reveal', 'close');
};

Я получаю следующую ошибку:

HTTP Error 405.0 - Method Not Allowed

The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.

ЧТО Я ПРОБОВАЛ:

Я нашел этот вопрос SO и последовал принятый ответ: я добавил глаголы как в файл DNN web.config, так и в файл IIS aplicationhost.config следующим образом:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ExtensionlessUrl-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />

Одно из решений — убедиться, что webDAV отключен, но я заметил, что файл dnn web.config уже комментирует эти строки webDAV в файле web.config. Поэтому я также закомментировал строки в файле applicationhost.config.

Я собираюсь удалить webDAV из IIS, чтобы посмотреть, поможет ли это, и обновить свой вопрос.

ВОПРОС

Я все еще получаю эту ошибку. Может ли кто-нибудь помочь мне понять, как добавить пользовательские глаголы в HTTP-запросы для сайтов DNN 7 в IIS 8 Express.


person J King    schedule 16.10.2014    source источник


Ответы (1)


Ладно, слишком быстро написал. Я открыл программу и функции Windows, а затем расширил IIS и снял флажок с webDAV. Он удалил его из IIS, и тогда все заработало.

Если кто-то еще найдет это, обратите внимание, что закомментировать строки в IIS не получилось, пришлось удалить webDAV из IIS.

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

person J King    schedule 16.10.2014