Web API动作成功执行,但在客户端应用程序中未看到任何响应。

26 浏览
0 Comments

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 PostAsJsonAsync(string uri, T value)

{

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

}

0