Привет, я пытаюсь удалить запись (HttpDelete). Метод в контроллере не запускается и не получает ошибку 405 Method Not Allowed.WEB API2/HTTP DELETE не запускается - ошибка 405
JQuery ниже
function deleteContract(contractId) {
var contract = new Object();
contract.ContractID = "ContractId";
$.ajax({
async: true,
type: 'DELETE',
data: contract,
dataType: "json",
url: 'http://localhost:4233/api/Contract/DeleteContractById/' + contractId,
}).done(function (data, textStatus, xhr) {
alert("deleted successfully")
}).error(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText || textStatus);
})
}
контроллер ниже
// DELETE: api/Contract/5
[ResponseType(typeof(Contract))]
[AllowAnonymous]
[HttpDelete]
[ActionName("DeleteContractById")]
//[Route("api/Contract/{id}")]
[AcceptVerbs("DELETE")]
public HttpResponseMessage DeleteContract(Guid id)
{
Contract contract = db.Contract.Find(id);
if (contract == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
db.Strata.Remove(contract);
db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK, contract);
}
webapiconfig ниже
public static void Register(HttpConfiguration config)
{
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ControllerAndAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "GET", id = RouteParameter.Optional }
);
}
веб-конфигурации ниже
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
</customHeaders>
</httpProtocol>
</system.webServer>
, когда я делаю вызов, используя скрипт, который работает нормально. сообщите мне, если я пропустил какие-либо настройки в коде.
Благодаря Dev
Возможный дубликат [ASP.NET Web API - PUT & DELETE Глаголы не разрешены - IIS 8] (http://stackoverflow.com/questions/10906411/asp-net-web-api-put-delete-verbs- not-allowed-iis-8) – Luke
Пожалуйста, ознакомьтесь с этими существующими вопросами: http://stackoverflow.com/questions/10906411/asp-net-web-api-put-delete-verbs-not-allowed-iis- 8 http: // stackoverflow.com/вопросы/15619075/webapi-delete-not-working-405-method-not-allowed http://stackoverflow.com/questions/10906411/asp-net-web-api-put-delete-verbs-not-allowed -iis-8 – Luke
У меня была эта проблема раньше, и я _disabled_ WebDav для пула приложений, на котором был размещен мой веб-сайт. – Luke