【问题标题】:WEB API Controller not loading in browserWEB API 控制器未在浏览器中加载
【发布时间】:2021-12-08 12:30:28
【问题描述】:

在开始使用 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;
            }
        }

    }
}

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

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

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

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

    注意:如果您提供您尝试使用的请求 URL,该 URL 会导致错误,或者更好的是 cURL,它是该请求的标准格式,会为您提供 404

    【讨论】:

      【解决方案2】:

      请执行以下操作。

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

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

            [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:[yourport]/api/j2/69 /420。 有关路由的更多信息,请访问以下 URL。 Create web APIs with ASP.NET Core

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-02
        • 2015-04-21
        • 1970-01-01
        • 2019-11-04
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多