我正在使用debfault aspnetidentitycore plugedin构建一个asp.net核心应用程序,唯一的变化是我通过将regiester方法修改为api添加了一个动作,这意味着可以被另一个应用程序调用。
[HttpPost]
[AllowAnonymous]
public async Task<EngineResult<object>> RegisterByApi([FromBody]RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new IdentityUser
{
DisplayName = model.Name,
UserName = model.Email,
Email = model.Email,
PhoneNumber = model.PhoneNumber,
};
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, isPersistent: false);
_logger.LogInformation(3, "User created a new account with password.");
return new EngineResult<object>(true) { Entity = new { sub = user.Id, name = user.DisplayName } };
}
return new EngineResult<object>(false) { Entity = string.Join(";", result.Errors?.Select(e => e.Description)) };
}
return new EngineResult<object>(false) { Entity = string.Join(";", ModelState.Values.SelectMany(m => m.Errors).Select(e => e.ErrorMessage)) };
}
但是当一个php调用这个api时,我得到一个奇怪的内容类型,就是这样 的应用/ JSON;边界= ------------------------ e3f0ef0cc3e74f25
这是php代码
<?php
$data = [
"Name"=>"testname",
"Email"=>"123@testdomain.com",
"Password"=>"123qwe!#QWE",
"ConfirmPassword"=>"123qwe!@#QWE",
"PhoneNumber"=>"12312321321",
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://xxxx/Account/RegisterByApi");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
header_remove();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
)
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
任何人都知道这里发生了什么?
答案 0 :(得分:0)
最后,这是我的PHP代码问题,不使用json数据,用转换为josn替换post数据将解决此问题: $ payload = json_encode($ data);