【问题标题】:Localhost 404 when using ASP.NET Core routing使用 ASP.NET Core 路由时的 Localhost 404
【发布时间】:2018-04-01 21:11:14
【问题描述】:

每当我向我的控制器添加任何类型的路由时,每个请求都以 404 结束。当没有 [Route] 时应用程序正常工作,但当我添加它时它会中断。我之前下载的项目工作正常,在不同的机器上工作正常,我的旧项目不再工作,所以可能是更新了一些东西/我破坏了一些东西。

ValuesController:

[Route("/api/[controller]")]
public class ValuesController : Controller
{
    private readonly ValuesService _valuesService;

    public ValuesController()
    {
        _valuesService = new ValuesService(); 
    }

    [HttpGet]
    IActionResult ReturnValues()
    {
        return Ok(_valuesService.ReturnValues());
    }
}

启动:

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<IStudentResearchGroupData, StudentResearchGroupData>();
    services.AddMvc();

    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme =
                                   JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme =
                                   JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer(o =>
    {
        o.Authority = "http://localhost:59418";
        o.Audience = "researchgroups";
        o.RequireHttpsMetadata = false;
    });
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseMvc();
    app.UseStaticFiles();
    app.UseAuthentication();
}

结果: 404 消息:

【问题讨论】:

  • 你的action方法叫什么?例如,URL http://localhost:57279:/api/values/index 是否有效?
  • 我已经添加了所有代码并尝试了 URL,没有工作。
  • 好吧,你的操作方法不叫Index,改用http://localhost:57279:/api/values/returnvalues
  • HttpGet 默认为控制器的根目录,因此提供代码的路径将是 http://localhost:57279:/api/values 给定使用的属性路由。动作也需要公开
  • 哦,是的,行动不公开 - 好地方@Nkosi

标签: c# asp.net-core-2.0 asp.net-core-routing


【解决方案1】:

HttpGet 在未给出路由模板时默认为控制器的根目录。

这意味着所提供代码的路径将是

http://localhost:57279:/api/values

鉴于使用的属性路由。

此外,操作必须是 public 才能作为端点在外部可见。

[Route("api/[controller]")]
public class ValuesController : Controller {
    private readonly ValuesService _valuesService;

    public ValuesController() {
        _valuesService = new ValuesService(); 
    }

    //GET api/values
    [HttpGet]
    public IActionResult ReturnValues() {
        return Ok(_valuesService.ReturnValues());
    }
}

参考Routing to Controller Actions

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2017-11-17
    • 2017-03-25
    • 2018-12-09
    相关资源
    最近更新 更多