dotnetcore / WebApiClient

A REST API library with better functionality, performance, and scalability than refit
https://webapiclient.github.io/
MIT License
2.04k stars 444 forks source link

无法获取到返回值 Object reference not set to an instance of an object. #143

Closed PinkPic closed 3 years ago

PinkPic commented 3 years ago
 [HttpPost("admin/api/staff/login")]
        ITask<ApiResult<LoggedModel>> Login([JsonContent] StaffLoginApiModel model);

注入

services.AddHttpApi<IStaffApi>()
                .ConfigureHttpApi(o =>
                {
                    o.HttpHost = new Uri("http://localhost:53518/");
                });

使用

var result = await StaffApi.Login(model); Console.WriteLine(result);

接口返回消息内容 { "content": null, "message": "用户不存在", "success": false, "serverTime": "2020-11-24 16:21:39" }

项目是blazor wasm 项目。能正常的请求接口并正常返回数据。接口正常。但是无法给result 赋值,result的值是null值。其他get接口正常,但是post接口就无法得到值。

xljiulang commented 3 years ago

你在接口关联[LoggingFilter]特性,然后在浏览器的console看看请求日志,或者把浏览器上的请求与响应贴出来以分析

PinkPic commented 3 years ago

blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.LogicalHandler[100] Start processing HTTP request GET http://localhost:53518/admin/api/staff/common blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.ClientHandler[100] Sending HTTP request GET http://localhost:53518/admin/api/staff/common blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.ClientHandler[101] Received HTTP response headers after 248.595ms - 200 blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.LogicalHandler[101] End processing HTTP request after 254.67ms - 200 blazor.webassembly.js:1 info: SiteSeed.Admin.Apis.IStaffApi.GetTest[0] [REQUEST] GET /admin/api/staff/common HTTP/1.1 Host: localhost:53518 User-Agent: WebApiClientCore/1.1.3.0 Accept: application/json; q=0.01, application/xml; q=0.01

  [RESPONSE]
  HTTP/1.1 200 OK
  Date: Wed, 25 Nov 2020 01:18:05 GMT
  Server: Microsoft-IIS/10.0
  Transfer-Encoding: chunked
  Vary: Accept-Encoding
  X-Powered-By: ASP.NET
  Content-Encoding: gzip
  Content-Type: text/plain; charset=utf-8

  Common info

  [ELAPSED] 00:00:00.2950000

blazor.webassembly.js:1 start blazor.webassembly.js:1 Common info blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.LogicalHandler[100] Start processing HTTP request POST http://localhost:53518/admin/api/staff/login blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.ClientHandler[100] Sending HTTP request POST http://localhost:53518/admin/api/staff/login blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.ClientHandler[101] Received HTTP response headers after 1986.02ms - 200 blazor.webassembly.js:1 info: System.Net.Http.HttpClient.SiteSeed.Admin.Apis.IStaffApi.LogicalHandler[101] End processing HTTP request after 1987.505ms - 200 blazor.webassembly.js:1 info: SiteSeed.Admin.Apis.IStaffApi.LoginAsync[0] [REQUEST] POST /admin/api/staff/login HTTP/1.1 Host: localhost:53518 User-Agent: WebApiClientCore/1.1.3.0 Accept: application/json; q=0.01, application/xml; q=0.01 Content-Type: application/json; charset=utf-8

  {"name":"test","password":"88888888"}

  [RESPONSE]
  HTTP/1.1 200 OK
  Date: Wed, 25 Nov 2020 01:18:07 GMT
  Server: Microsoft-IIS/10.0
  X-Powered-By: ASP.NET
  Content-Length: 873
  Content-Type: application/json

  {
    "content": {
      "avatar": "https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoKUiaD7pYXoiaVvldKARic1c8CFnukWelcf1bfb7VOaSrpicpGPDrZyicuicWeUrrRR8aHfuEQljrW66vA/132",
      "id": "36504924590178304",
      "username": "test",
      "name": null,
      "role": 0,
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJOYW1lIjoieXh3IiwiSWQiOiIzNjUwNDkyNDU5MDE3ODMwNCIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvZXhwaXJhdGlvbiI6IjIwMjAvMTEvMjkgNToxODowNyIsIkp3dC5KdGkiOiIwMzUxOERDNURENEVDQUYxNjY2N0IxODU2M0I2NTBBMCIsIm5iZiI6MTYwNjI2NzA4NywiZXhwIjoxNjA2NjI3MDg3LCJpYXQiOjE2MDYyNjcwODcsImlzcyI6Imh0dHA6Ly9hZG1pbi54aW54aW5nemhhbmdndWkuY29tLyIsImF1ZCI6Imh0dHA6Ly9hZG1pbi54aW54aW5nemhhbmdndWkuY29tLyJ9.V1CIujLsOXzW5LnEcyTqRNLEC1TgSznO7i3Z8POk4Kc",
      "claims": []
    },
    "message": null,
    "success": true,
    "serverTime": "2020-11-25 01:18:07"
  }

  [ELAPSED] 00:00:02.0100000

blazor.webassembly.js:1 blazor.webassembly.js:1 crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] Unhandled exception rendering component: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at SiteSeed.Admin.Pages.Login.HandleSubmit(EditContext editContext) in D:\Source\SiteSeed\Src\SiteSeed.Admin\Pages\Login.razor.cs:line 52 at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at AntDesign.Form`1.d__70[[SiteSeed.Admin.Shared.ApiModels.Staffs.StaffLoginApiModel, SiteSeed.Admin.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.Forms.EditForm.HandleSubmitAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle) d.printErr @ blazor.webassembly.js:1 d.preRun.push.window.Blazor._internal.dotNetCriticalError @ blazor.webassembly.js:1 w @ blazor.webassembly.js:1 _mono_wasm_invoke_js_blazor @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194e46 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 set_task_result @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 Promise.then (async) js_to_mono_obj @ dotnet.5.0.0.js:1 mono_wasm_convert_return_value @ dotnet.5.0.0.js:1 _mono_wasm_invoke_js_with_args @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 set_task_result @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 Promise.then (async) js_to_mono_obj @ dotnet.5.0.0.js:1 mono_wasm_convert_return_value @ dotnet.5.0.0.js:1 _mono_wasm_invoke_js_with_args @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 endInvokeJSFromDotNet @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.webassembly.js:1 w @ blazor.webassembly.js:1 _mono_wasm_invoke_js_blazor @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194e46 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 set_task_result @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 Promise.then (async) js_to_mono_obj @ dotnet.5.0.0.js:1 mono_wasm_convert_return_value @ dotnet.5.0.0.js:1 _mono_wasm_invoke_js_with_args @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 set_task_result @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 Promise.then (async) js_to_mono_obj @ dotnet.5.0.0.js:1 mono_wasm_convert_return_value @ dotnet.5.0.0.js:1 _mono_wasm_invoke_js_with_args @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 endInvokeJSFromDotNet @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.webassembly.js:1 w @ blazor.webassembly.js:1 _mono_wasm_invoke_js_blazor @ dotnet.5.0.0.js:1 do_icall @ 00aba1c6:0x194e46 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_invoke_checked @ 00aba1c6:0xf65a mono_runtime_try_invoke_array @ 00aba1c6:0x10e81f ves_icall_InternalInvoke @ 00aba1c6:0xed48f ves_icall_InternalInvoke_raw @ 00aba1c6:0xecf54 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_invoke_checked @ 00aba1c6:0xf65a mono_runtime_try_invoke_array @ 00aba1c6:0x10e81f ves_icall_InternalInvoke @ 00aba1c6:0xed48f ves_icall_InternalInvoke_raw @ 00aba1c6:0xecf54 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_invoke_checked @ 00aba1c6:0xf65a mono_runtime_try_invoke_array @ 00aba1c6:0x10e81f ves_icall_InternalInvoke @ 00aba1c6:0xed48f ves_icall_InternalInvoke_raw @ 00aba1c6:0xecf54 do_icall @ 00aba1c6:0x194dd3 do_icall_wrapper @ 00aba1c6:0x79df6 interp_exec_method @ 00aba1c6:0x44ad0 interp_runtime_invoke @ 00aba1c6:0x12efed mono_jit_runtime_invoke @ 00aba1c6:0x118e4d do_runtime_invoke @ 00aba1c6:0x79d3f mono_runtime_try_invoke @ 00aba1c6:0x1297f mono_runtime_invoke @ 00aba1c6:0x10ec19 mono_wasm_invoke_method @ 00aba1c6:0x108e40 Module._mono_wasm_invoke_method @ dotnet.5.0.0.js:1 call_method @ dotnet.5.0.0.js:1 (anonymous) @ dotnet.5.0.0.js:1 beginInvokeDotNetFromJS @ blazor.webassembly.js:1 h @ blazor.webassembly.js:1 e.invokeMethodAsync @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 invokeWhenHeapUnlocked @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 t.dispatchEvent @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 e.onGlobalEvent @ blazor.webassembly.js:1 Show 55 more frames from Library code

PinkPic commented 3 years ago

是因为数据序列化导致到问题 o.JsonDeserializeOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString; .net 5设置后解决问题。