没有抛出错误时返回错误..WEB API C#

时间:2017-09-11 15:56:48

标签: c# rest asp.net-web-api

我有一个Web API 2.0操作,它执行以下操作:

  [System.Web.Http.Route("api/wdretrievedata")]
    [System.Web.Http.HttpGet]
    public IHttpActionResult RetrieveUserData(string email)
    {
        var user = new WDUserData();
        user.FirstName = "FirstName";
        user.LastName="LastName";
        user.PhoneNumber="PhoneNumber";
        return Ok(user);

    }

如您所见,此处没有错误。我在Postman中运行它并获得结果(为了安全性省略了某些数据):

enter image description here

我通过$ .ajax在我的代码中运行它,如下所示:

 $.ajax({
                url: 'http://localhost:49352/api/wdretrievedata?email=myemail@gmail.com',
                type: "GET",
                async: true,

                success: function (data) {
                   //never goes here
                },
                error: function (err) {
                     //always goes here
                    //err.statusText says 'error' and nothing else
                        alert(err.statusText);
                }
            });

API调用始终在错误部分返回,并且不包含任何数据。如何通过像Postman这样的$ .ajax调用让我的API调用工作?感谢

如果这有帮助,我已将我的api部署到我的网络服务器上。特洛伊这个网址,看看我得到了什么:

http://tce-windows-env.hiujwmcthx.us-east-2.elasticbeanstalk.com/api/wdretrievedata?email=troy.compton@gmail.com

2 个答案:

答案 0 :(得分:1)

在使用@BoundForGlory进行一些研究后,发现了Cross-Origin Requests的问题。

其中一个选项是添加自定义标头Access-Control-Allow-Origin以允许CORS

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
    </customHeaders>
</httpProtocol>

答案 1 :(得分:-1)

尝试:

[System.Web.Http.Route("api/wdretrievedata")]
[System.Web.Http.HttpGet]
public async Task<IHttpActionResult> RetrieveUserData(string email)
{
    var user =  await new WDUserData();
    user.FirstName = "FirstName";
    user.LastName="LastName";
    user.PhoneNumber="PhoneNumber";
    return Ok(user);

}