Webservice返回404(未找到)

时间:2015-10-22 02:48:29

标签: .net web-services c#-4.0

大家好我正在构建一个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>

我在其他服务上使用的相同脚本,它们都正确响应。有什么想法吗?

1 个答案:

答案 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);
    }
});

希望有所帮助。