大家好我正在构建一个Web服务。该服务已构建在我的localhost上,因此当我在浏览器中点击URL时,http://127.0.0.1/api/MyTest/GetStatus实际上会回复预期的消息。
<Error>
<Message>
The requested resource does not support http method 'GET'.
</Message>
</Error>
然而,当我尝试用脚本文件命中时,它返回404未找到。消息返回为"No HTTP resource was found that matches the request URI 'http://127.0.0.1/api/MyTest/GetStatus'."
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.ajax({
url: 'http://127.0.0.1/api/MyTest/GetStatus',
type: 'POST',
contenttype: 'application/json; charset=utf-16',
success: function (msg) {
console.log(msg);
}
});
</script>
我在其他服务上使用的相同脚本,它们都正确响应。有什么想法吗?
答案 0 :(得分:2)
如果你没有向我们提供你的ServerSide代码,我会做一些假设。
我假设您使用的是WebApi,并且您的控制器方法与此类似:
public class MyTestController : ApiController
{
[HttpPost, ActionName("GetStatus")]
public void GetStatus(string value)
{
}
}
这可以解释为什么你会得到
请求的资源不支持http方法'GET'。
通过浏览器发出请求时。
您在POST上找不到404的原因可能是因为您没有在请求中发布任何数据,但您的控制器方法预计会有一些价值。
尝试更改AJAX调用以包含POST数据:
$.ajax({
url: 'http://127.0.0.1/api/MyTest/GetStatus',
type: 'POST',
data: {someData}
contenttype: 'application/json; charset=utf-16',
success: function (msg) {
console.log(msg);
}
});
确保您的POST数据格式与您的Controller方法签名匹配。
OR
您调用了Controller方法“GetStatus”,所以我假设您正在尝试从服务器获取某些状态。
真的需要POST吗?您是否意味着要使用GET?
如果是这样,您应该将Method签名更改为:
public class MyTestController : ApiController
{
[HttpGet, ActionName("GetStatus")]
public string GetStatus()
{
return "SomeStatus";
}
}
并将您的AJAX调用更新为:
$.ajax({
url: 'http://127.0.0.1/api/MyTest/GetStatus',
type: 'GET',
contenttype: 'application/json; charset=utf-16',
success: function (msg) {
console.log(msg);
}
});
希望有所帮助。