Web API动作成功执行,但在客户端应用程序中未看到任何响应。
Web API动作成功执行,但在客户端应用程序中未看到任何响应。
我从一个ASP.NET MVC应用程序向我的Web API的一个动作发出POST请求。API中的动作成功执行。当我在像Postman for Chrome这样的REST客户端中发出相同的请求时,我看到了一个有效的Json响应。
然而,如果我从我的MVC应用程序中发出调用,我就无法看到任何响应,而且在向API发出POST请求后,控制流就消失了。MVC应用程序一直在等待,就好像。
以下是我的代码。
Web API
[HttpPost]
[ActionName("CreateNewUserFromAccountInfo")]
public IUser CreateNew(NewUserAccountInfo newUserAccountInfo)
{
return _provider.CreateNew(newUserAccountInfo.FullName, newUserAccountInfo.Email, newUserAccountInfo.PasswordHash);
}
MVC应用程序控制器
IUser user = new WebAPIClient()
.PostAsJsonAsync
("api/membership/CreateNewUserFromAccountInfo",
newUserAccountInfo
).Result;
从MVC应用程序引用的类库中的WebAPIClient类:
public async Task
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseUri);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
await PrintRequestBodyToDebugWindowAsync(value, new JsonMediaTypeFormatter());
//控制流在这一行之后就消失了,永远不会到达下一行
var response = await client.PostAsJsonAsync(uri, value);
//控制流永远不会到达这里
if (response.IsSuccessStatusCode) return await response.Content.ReadAsAsync
else return default(R);
}
}
通过Postman(一个REST客户端)进行请求时返回的结果:
请求地址:http://localhost:54488/api/membership/CreateNewUserFromAccountInfo
方法:POST
请求体:{"FullName":"Aamir Khan","Email":"aamir@khan.com","PasswordHash":"hello"}
响应:
{
"Id": 15,
"IsExternal": false,
"ExternalId": null,
"ExternalProviderName": null,
"UserType": "Healthcare Seeker",
"Verified": false,
"VerificationCode": "375b8d2f-67df-433d-9e95-c84c30462b80",
"VerificationCodeExpiresOn": "9999-12-31T23:59:59.9999999",
"PasswordResetCode": null,
"DefaultPasswordChanged": false,
"HasFilledBasicProfile": false,
"CreationDateTime": "2014-07-01T20:47:45.1405416+05:30",
"FullName": {
"Id": 2,
"Name": "FullName",
"Value": "Aamir Khan",
"Description": null,
"PrivacyLevel": {
"Id": 1,
"Name": "Private",
"Description": "仅对我可见"
}
},
"Email": {
"Id": 1,
"Name": "Email",
"Value": "aamir@khan.com",
"Description": null,
"PrivacyLevel": {
"Id": 1,
"Name": "Private",
"Description": "仅对我可见"
}
},
"Profiles": [
null,
null,
null
],
"BasicProfile": null,
"MedicalProfile": null,
"EmergencyProfile": null
}