Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有引发错误时返回错误..WEB API C#_C#_Rest_Asp.net Web Api - Fatal编程技术网

没有引发错误时返回错误..WEB API C#

没有引发错误时返回错误..WEB API C#,c#,rest,asp.net-web-api,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";

我有一个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中运行此程序并获得结果(出于安全考虑,省略了某些数据):

我通过$.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部署到web服务器上了。Troy此url查看我得到的内容:

试试:

[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);

}
[System.Web.Http.Route(“api/wdretrievedata”)]
[System.Web.Http.HttpGet]
公共异步任务RetrieveUserData(字符串电子邮件)
{
var user=等待新的WDUserData();
user.FirstName=“FirstName”;
user.LastName=“LastName”;
user.PhoneNumber=“PhoneNumber”;
返回Ok(用户);
}
试试:

[System.Web.Http.Route(“api/wdretrievedata”)]
[System.Web.Http.HttpGet]
公共异步任务RetrieveUserData(字符串电子邮件)
{
var user=等待新的WDUserData();
user.FirstName=“FirstName”;
user.LastName=“LastName”;
user.PhoneNumber=“PhoneNumber”;
返回Ok(用户);
}

在对@BoundForGlory进行一些研究后,发现跨源请求存在问题

其中一个选项是添加自定义标题
访问控制允许来源
以允许CORS

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

在对@BoundForGlory进行一些研究后,发现跨源请求存在问题

其中一个选项是添加自定义标题
访问控制允许来源
以允许CORS

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



您能告诉我们错误吗?您不是因为呼叫同一个源(本地主机)而收到错误吗?呼叫的响应状态代码是什么响应状态代码是200getting error:
请求的资源上不存在“Access Control Allow origin”头。
@demo-当您向我显示收到的错误时,我发现了这个,这就是答案…我如何给你信用?你帮我找到了这个你能告诉我们错误吗?您不是因为呼叫同一个源(本地主机)而收到错误吗?呼叫的响应状态代码是什么响应状态代码是200getting error:
请求的资源上不存在“Access Control Allow origin”头。
@demo-当您向我显示收到的错误时,我发现了这个,这就是答案…我如何给你信用?你帮我找到了这不是compile@BoundForGlory,您需要使用system.threading.tasks添加
如果我没有错的话,我这样做了,甚至添加了return Task.FromResult(用户)。还是一样的问题我添加了url,这样你就可以测试它了compile@BoundForGlory,您需要使用system.threading.tasks添加
如果我没有错的话,我这样做了,甚至添加了return Task.FromResult(用户)。还是同样的问题,我添加了url以便您可以测试它。