【发布时间】:2012-10-26 06:55:07
【问题描述】:
调用 DELETE 方法 Web API 未到达服务器。在网上搜索类似的问题后,非对我有用。 下面是我的解决方案中的代码简介。
网络 API:
[AuthorizeService]
[HttpDelete]
public HttpResponseMessage Delete(Int32 id)
{
String username = User.Identity.Name;
this._clientDataManager.DeleteRestaurant(id,username);
return new HttpResponseMessage(HttpStatusCode.OK);
}
Ajax 调用:
$.ajax({
url: 'localhost:53378/api/RestaurantWebAPI/1135',
type: "DELETE",
statusCode: {
200: function (data) {
//success
}
}, beforeSend: setHeader
});
Web.Config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 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,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
感谢任何帮助。
【问题讨论】:
-
您能否删除 AuthorizeService 属性进行试用并查看其是否可以访问?
-
@ancdev 您确定
AuthorizeService方面或过滤器不会阻止您的操作调用吗? -
我的问题是响应是 404 Not Found。这个属性执行一个简单的身份验证,没什么特别的。
-
@ancdev 和这个控制器的其余 HTTP 方法工作正常吗?正确的?我的意思是你在那里尝试过 GET 方法吗?
-
GET、POST、PUT 完美运行
标签: c# asp.net-mvc asp.net-web-api