我以前搜索过,并试图执行答案,但没有成功。
进入邮递员的url /blogpage返回一个200 OK。
我被困住了,似乎把自己画在了一个角落里,希望有人指出显而易见的事情。
谢谢大家
更新了新的见解和工作代码.
铬中的误差
Unhandled exception rendering component: '<' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
System.Text.Json.JsonException: '<' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
---> System.Text.Json.JsonReaderException: '<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0. ```
My Razor-Component code-block
@code {
private List<BlogItem> BlogPosts = new List<BlogItem>();
protected override async Task OnAfterRenderAsync(bool firstRender)
{
BlogPosts = await Http.GetFromJsonAsync<List<BlogItem>>("GetAllBlogPosts");
}
}
**EDIT - got a working code going**
List<BlogItem> BlogPosts;
protected override async Task OnInitializedAsync()
{
var response = await Http.GetAsync("/api/GetAllBlogPosts");
if (response.IsSuccessStatusCode)
{
BlogPosts = await response.Content.ReadFromJsonAsync<List<BlogItem>>();
enter code here
My BlogController
[Route("api[controller]")]
[ApiController]
public class BlogController : ControllerBase
{
private readonly ApplicationDbContext _context;
public BlogController(ApplicationDbContext context)
{
this._context = context;
}
public List<BlogItem> BlogPosts { get; set; } = new List<BlogItem>
{
new BlogItem { Title = "My first blog", Summary = "My first blog ever"}
};
[HttpGet]
[Route("GetAllBlogPosts")]
public ActionResult<List<BlogItem>>Get()
{
return Ok(_context.BlogItem);
}
**EDIT - changed the route to this - [Route("/api/GetAllBlogPosts")]**发布于 2021-05-26 11:22:01
我相信你的问题源于:
BlogPosts = await Http.GetFromJsonAsync<List<BlogItem>>("GetAllBlogPosts");这一行假设Json结果来自符合List的API。如果调用API时出错,则结果将不一致。您的问题中报告的错误是试图反序列化这个未确认的结果。
要找到问题的真正根源,请尝试以下模式:
HttpResponseMessage res = await Http.GetAsync("GetAllBlogPosts");
if (res.IsSuccessStatusCode)
{
// Only deserialize when we did not have an API failure
BlogPosts = res.Content.ReadFromJsonAsync<List<BlogItem>>();
}
else
{
// Otherwise treat the response as an error message
string errMsg = await res.Content.ReadAsStringAsync();
Console.WriteLine(errMsg);
throw new Exception(errMsg);
}这样,只有在响应成功时才会尝试反序列化。如果调用得到一个错误,它将将内容(错误消息)作为字符串读取。该字符串将告诉您问题的真正根源是什么。
发布于 2021-05-25 15:59:57
固定动作
[Route("GetAllBlogPosts")]
public ActionResult<List<BlogItem>> Get()
{
return Ok(_context.Set<BlogItem>().ToList());
}并试图取代
if (response.IsSuccessStatusCode)
{
BlogPosts = await response.Content.ReadFromJsonAsync<List<BlogItem>>();使用
if (response.IsSuccessStatusCode)
{
var stringData = await response.Content.ReadAsStringAsync();
BlogPosts = JsonConvert.DeserializeObject<List<BlogItem>>(stringData);
}
else{ ...error code}发布于 2021-05-26 09:31:31
它是否是一个BOM (字节顺序标记)-尝试打开类似于notepad++,选择UTF-8编码,保存,沙尝试重新启动。
https://stackoverflow.com/questions/67690940
复制相似问题