Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core webapi调用blazorserver时出现400错误_Asp.net Core_Asp.net Web Api_Blazor_Blazor Server Side - Fatal编程技术网

Asp.net core webapi调用blazorserver时出现400错误

Asp.net core webapi调用blazorserver时出现400错误,asp.net-core,asp.net-web-api,blazor,blazor-server-side,Asp.net Core,Asp.net Web Api,Blazor,Blazor Server Side,我正在尝试设置blazor服务器应用程序,调用webapi。 当我调用API时,我一直得到一个400错误的返回 我有3个项目,projectserver和projectapi。projectserver是Blazor应用程序所在的位置,ProjectAPI是API所在的位置 我不知道apicall是否能找到API,因为它在API部分没有遇到任何断点,我完全困惑了,如果它找不到API,那么它应该返回404或其他错误,而不是400 谢谢你的努力。 这是我的密码 Projectserver,这是我将注

我正在尝试设置blazor服务器应用程序,调用webapi。 当我调用API时,我一直得到一个400错误的返回

我有3个项目,projectserver和projectapi。projectserver是Blazor应用程序所在的位置,ProjectAPI是API所在的位置

我不知道apicall是否能找到API,因为它在API部分没有遇到任何断点,我完全困惑了,如果它找不到API,那么它应该返回404或其他错误,而不是400

谢谢你的努力。 这是我的密码

Projectserver,这是我将注册模型发布到API的地方

    public string message { get; set; }
    public RegisterModel r = new RegisterModel();

    private async Task Create(MouseEventArgs e)
    {
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(r);
        var client = clientfactory.CreateClient("ServerApi");
        var result = await client.PostAsJsonAsync("/Account/Register",json); // check the Startup file and check base address for the Full route. 

        message = result.StatusCode.ToString();
    }
} 

ClientFactory返回startup.cs中定义的基址

services.AddHttpClient(“ServerApi”,客户端=>client.BaseAddress=新Uri(“https://localhost:44302/"));

API是Projectserver,定义如下

[Route("[controller]")]
    [ApiController]
    public class AccountContoller : ControllerBase
    {
        private readonly ApplicationDbContext _context;
        private readonly SecurityOptions _securityOptions;

        private readonly JwtIssuerOptions _jwtOptions;
        // GET: api/<Account>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<Account>/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        // POST api/<Account>
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }
        // POST api/<Account>
        [HttpPost("Register")]
        public async Task<ActionResult<RegisterResult>> Register(RegisterModel model)
        {
            RegisterResult r = new RegisterResult();

            var Exisits = await _context.Users.Where(r => r.EmailAddress == model.Email).FirstOrDefaultAsync();

            if(Exisits != null)
            {
                r.Sucsess = false;
                r.ErrorMessage = "Email - Already Exisits";
                return r;
            }
            else
            {
                try
                {
                    User newuser = new User();
                    newuser.CreatedDateTime = DateTime.UtcNow;
                    newuser.UserID = Guid.NewGuid();
                    newuser.MobileNumber = model.MobileNumber;
                    newuser.Password = model.Password;
                    newuser.FirstName = model.FirstName;
                    newuser.Surname = model.LastName;
                    _context.Users.Add(newuser);
                    await _context.SaveChangesAsync();

                    r.Sucsess = true;
                    return r;


                }
                catch(Exception e)
                {
                    r.Sucsess = false;
                    r.ErrorMessage = e.ToString();
                    return r; 
                }
                
                

            }

            
        }

请按以下方式修改您的代码并试一试:-

var serializedBody = JsonConvert.SerializeObject(r);
var jsonRequestBodyContent = new StringContent(serializedBody, Encoding.UTF8,"application/json");
 var client = clientfactory.CreateClient("ServerApi");
 var result = await client.PostAsync("/Account/Register",jsonRequestBodyContent);

您可以在调试控制台中发布您的检查。我怀疑你发了两条斜线。try:var result=await client.PostAsJsonAsync(“帐户/注册”,json);
var serializedBody = JsonConvert.SerializeObject(r);
var jsonRequestBodyContent = new StringContent(serializedBody, Encoding.UTF8,"application/json");
 var client = clientfactory.CreateClient("ServerApi");
 var result = await client.PostAsync("/Account/Register",jsonRequestBodyContent);