【问题标题】:VSCode cant run .net core apiVSCode 无法运行 .net core api
【发布时间】:2021-01-07 15:38:09
【问题描述】:

我在 VS Code 上使用 .NET Core 创建了一个 API 应用程序。 我在终端中输入dotnet run,其结果如下图所示:

但是当我在浏览器中浏览 URL 时,它显示:

我该怎么办?我更改了端口,但还没有工作。

这是我的初创公司:

namespace API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers();
            // services.AddSwaggerGen(c =>
            // {
            //     c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
            // });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                // app.UseSwagger();
                // app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "API v1"));
            }

            // app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

这是我的 program.cs:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

【问题讨论】:

    标签: c# api asp.net-core visual-studio-code


    【解决方案1】:

    如果你检查代码,API控制器的默认路由可能看起来像这样Route("api/[controller]"),属性路由中不包含[action]令牌。

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET /api/values
        [HttpGet] 
        public IActionResult Get()
        {
            return Ok("Data From Get Action");
        }
    
        // GET /api/values/3
        [HttpGet("{id}")]
        public IActionResult Get(int id)
        {
            return Ok(id);
        }
    
        // POST /api/values
        [HttpPost]
        public IActionResult Post()
        {
            return Ok("Data From Post Action");
        }
    }
    

    要访问第一个操作,您可以使用以下 URL 发出请求。

    https://localhost:5001/api/values
    

    另外,如果你真的想将/api/values/get匹配到你的端点,你可以尝试修改如下代码。

    // GET /api/values/get
    [HttpGet("get")] 
    public IActionResult Get()
    {
        return Ok("Data From Get Action");
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多