http ошибка 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.
1 ответ
Хорошо, опубликовано слишком быстро. Я открыл программу и функции Windows, а затем расширил IIS и не проверял webDAV. Он удалил его из IIS, а затем все заработало.
Если кто-то еще обнаружит это, обратите внимание, что комментирование строк в IIS не сработало, мне пришлось деинсталлировать webDAV из IIS.