WEB API 控制器未在浏览器中加载

WEB API Controller not loading in browser

在开始使用 C# 时遇到一些问题,这是我遇到的错误: HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、更名或暂时不可用。

刚接触这种语言,如有任何提示,不胜感激。

这是我的代码:

using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace Http5112Assignment2.Controllers
{
    public class DiceGameController : ApiController
    {

        [Route("api/J2/DiceGame/{die1}/{die2})")]
        public class J2Controller : ApiController
        {
            [HttpGet]
            public int DiceGame(int die1, int die2)
            {
                int dieSum = die1 + die2;
                return dieSum;
            }
        }

    }
}

请执行以下操作。

  1. 将每个 class 移动到一个名为 Api 控制器的单独文件中。在这里我们可以看到您嵌套了两个 Api 不应该做的控制器。

  2. Api 控制器路由注释通常看起来像 [Route("[controller]")][Route( “api/[控制器]”)]。下面是一个例子。

        [Route("api/[controller]")]
        public class J2Controller : ApiController
        {
            [HttpGet("DiceGame/{die1}/{die2}")]
            public int DiceGame([FromRoute] int die1, [FromRoute] int die2)
            {
                int dieSum = die1 + die2;
                return dieSum;
            }
        }
    

如果您想调用 DiceGame 端点,请确保您的 Api 是 运行,您只需向 URL 发送 HTTP GET 请求即可:https://localhost:[你的端口]/api/j2/dicegame/69/420。 有关路由的更多信息,请访问以下 URL。 Create web APIs with ASP.NET Core

我发现您的路由字符串中可能有错字,请注意 /{die2})

中的 )

所以,假设您没有更改 RouteConfig 文件中默认路由的任何内容,那么请确保您 URL 如下(注意我的运行在 https: //localhost:44301 你的可能不同)

https://localhost:44301/api/J2/DiceGame/12/34)

注意:如果您提供您尝试使用的请求 URL 给了您错误,或者更好的是 cURL,这是该请求的标准格式给了你 404