在我的Web API上,我有一些[HttpGet]
函数可以正常工作,但是[HttpDelete]
(在同一个控制器上)的函数不起作用,它会返回404错误。< / p>
[Authorize]
[RoutePrefix("Users")]
public class UsersController : ApiController
{
[HttpDelete]
[Route("DeleteUser/{ID}")]
public void Delete(int id)
{
_UserRepository.Delete(id);
}
}
在web.config上,我将verb
设置为*
:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<remove name="FormsAuthentication" />
</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>
</system.webServer>
AJAX电话:
deleteUser = function (id, callback) {
$.ajax({
url: "../../API/Users/DeleteUser/" + id,
type: "DELETE",
success: function () {
callback;
}
});
}
错误:
HTTP错误404.0 - 未找到 详细的错误信息 模块IIS Web核心通知MapRequestHandler处理程序StaticFile
错误代码0x80070002
请求 网址https://www.example.com:443/Rejected-By-UrlScan?~/API/Users/DeleteUser/155
物理路径d:\ wr \ mySite \ example.com \ Rejected-By-UrlScan 登录方法匿名登录用户匿名
所有呼叫都使用OWIN身份验证和承载令牌进行身份验证。
同一页面上的工作电话示例:
getUsers = function (callback) {
$.get("../../API/Users/GetUsers/", callback);
}
是什么导致它?
答案 0 :(得分:2)
答案 1 :(得分:1)
尝试手动设置动词
MonadVerifier[A, F[_]: Monad] // no params needed
同时检查以确保
您正在调用正确的路径。
您没有与预期路线匹配的文件夹
此外,您的路线模板占位符需要与操作参数名称匹配
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<remove name="FormsAuthentication" />
</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="GET,HEAD,POST,DEBUG,DELETE,PUT"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>