我今天看到了一件可怕的,也很有趣的事情。请看一下这个对web方法的ajax调用。
$.ajax({
url: 'api/AccountAPI/GetByNickName',
type: 'POST',
data: JSON.stringify({ ConnectedUserNickName: key }),
dataType: "json",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data) {
alert('successful');
},
error: function (err) {
alert('error');
}
});
发生错误:“未能加载资源:服务器响应状态为405 (方法不允许)”。这个ajax调用没有击中服务器端的"GetByNickName“方法。
如果我将方法名更改为"checkNickName“或其他任何东西,那么它可以正常工作。我觉得很有趣。有人能说出这里发生了什么吗。
$.ajax({
url: 'api/AccountAPI/CheckNickName',
type: 'POST',
data: JSON.stringify({ ConnectedUserNickName: key }),
dataType: "json",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data) {
alert('successful');
},
error: function (err) {
alert('error');
}
});
当我注意到由于方法名"GetByNickName“而出现错误时,我想ajax post/get方法名中可能有一些智能。那么,真正的原因是什么?
发布于 2013-09-14 07:12:04
在ASP.NET中,默认情况下,Web API framework
根据请求的HTTP verb
将传入的请求映射到适当的操作。
因此,如果您指定GetByNickName
,这对应于HTTP谓词GET
,其中CheckNickName
不对应于任何HTTP谓词,因此它在您的情况下是有效的。
例如,假设您在AccountAPI
中有一个操作
public void Get(int id)
您的URI看起来应该是api/AccountAPI/{id}
有关详细信息,请参阅路由和行动选择文档,并检查样本应用
https://stackoverflow.com/questions/18787848
复制相似问题