【问题标题】:HTTPGet Action Method gets error messagesHTTPGet 操作方法获取错误消息
【发布时间】:2021-01-20 09:05:21
【问题描述】:

我尝试使用 HttpGet 操作方法,但收到错误消息。
我按照 this Youtube Video 的教程制作了一个 CRUD 应用程序,但我收到了 2 条错误消息,所以我从 here 复制了代码,但没有任何区别。

我还安装了 NuGet 包 Microsoft.AspNetCore.HttpSystem.Net.Http,我认为我可能遇到问题是因为缺少一个包,但它也没有帮助。

下面是PeopleController.cs下的代码:

using CuriousDriveTutorial.Data.Models;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;

namespace CuriousDriveTutorial.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class PeopleController: ControllerBase
    {
        //dependancy injection for applicationdbcontext
        private readonly ApplicationDBContext context1;
        public PeopleController(ApplicationDBContext context) { this.context1 = context; }
    }

    //get action method
    [HttpGet]
    public async Task<IActionResult> Get() => await context1.People.ToListAsync();

}

以下是第 22 行 (public async Task&lt;IActionResult&gt; Get() =&gt; await context1.People.ToListAsync();) 的错误消息:

    1. CS0116 命名空间不能直接包含字段或方法等成员。
    1. CS0103 当前上下文中不存在名称“context1”。

红色的 squiggly 线位于 Getcontext1 的下方。另外,我不知道这些信息是否有用,但该项目是 Blazor 应用程序。

【问题讨论】:

  • 您的//get action method 和随附的代码必须在PeopleController 类中

标签: c# crud http-get


【解决方案1】:

您在第 18 行关闭了类 PeopleController,因此方法 Get 不再是该类的一部分。在 C# 中,函数不能直接成为命名空间的成员。出于同样的原因,它无法访问变量context1

解决方法:将大括号从第 18 行移到第 23 行。

【讨论】:

  • 我做了,但我仍然遇到问题,所以我将第 22 行更改为 public async Task&lt;IActionResult&gt; Get() =&gt; (IActionResult)await context1.People.ToListAsync();
  • 啊,我没有检查那部分。是的,List 不是 IActionResult 对象,因此强制转换可能在执行期间仍然会给您带来错误。通常您会返回类似Ok(await ...) 的内容,因此您的API 将返回状态200 OK,并在响应正文中包含列表。
【解决方案2】:

Get() 方法是在 PeopleController 类之外定义的。 你应该在你的类中定义你的方法。 像这样。

public SomeClass
{
  //blur
  public void SomeMethod()
  {
       //do nothing.
  }
}

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    相关资源
    最近更新 更多