asp.net-core - Asp.net 核心 UrlHelper 返回空值

标签 asp.net-core asp.net-mvc-routing asp.net-core-webapi

我正在使用 asp.netcore 1.1 构建一个简单的 api,并尝试创建超媒体链接。我看过

WebAPI Url.Link() returning NULL

还有一些类似的,但这些都没有帮助。

我的 Controller 是

[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/organizers")]
public class OrganizersController : Controller
{
    [HttpGet, Route("{id:int}", Name = "get-organizers")]
    public IActionResult Get(int id)
    {
        try
        {
            var uri = Url.Link("default", new {id=2});
            var uri2 = Url.RouteUrl("default", new { controller = "Organizers", action = "get-organizers", id = 1 });
            (...)
        }
        (...)

     }

我的创业公司看起来像

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        //serilog
        loggerFactory.AddSerilog();

        app.UseMvc(opt=>opt.MapRoute("default", "api/v{version:apiVersion}/{controller}/{action}/{id:int?}"));
        appLifetime.ApplicationStopped.Register(() => ApplicationContainer.Dispose());
    }

我已经尝试了许多可能参数的排列组合,包括删除操作、api、版本等。仍然,我对两个 url 都为 null。

最佳答案

我试过你的例子

Url.Link("default", new {id=2});

返回 http://localhost:1237/api/v1.0/Organizers/Get/1

Url.RouteUrl("default", new {controller = "Organizers", action = "get-organizers", id = 1});

返回 /api/v1.0/Organizers/get-organizers/1,即使未定义 get-organizers 操作,它也是一个路由名称。

但是,

Url.Action("Get", new { id = id });
// or
Url.RouteUrl("get-organizers", new { id = id });

返回 /api/v1.0/organizers/1,看起来更 RESTful。

你不应该得到 NULL 值。确保已启用 API 版本控制。

    public void ConfigureServices( IServiceCollection services )
    {
        services.AddMvc();
        services.AddApiVersioning( o => o.ReportApiVersions = true );
    }

关于asp.net-core - Asp.net 核心 UrlHelper 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42137812/

相关文章:

asp.net - ASP.NET MVC 3 路由可能存在错误?

javascript - 如何在 ASP.NET MVC 5 中使用 JavaScript 在运行时使用路由值增加 actionlink?

c# - 带有自定义响应包装器的 ASP.NET Core 3.1 Web API 中的 JSON 响应中断

amazon-web-services - 为 aws cognito id token 生成基于角色的声明

c# - 如何以编程方式将 .NET 5 中的文件上传到 .NET 5 Rest API 而不会丢失内容?

c# - 在 LINQ 查询上使用 "Include"方法时出错

c# - Mongo .Net Driver PipelineStageDefinitionBuilder.Project 会自动忽略所有带有 facet 的 Id 值

entity-framework - 在 EF Core 中自动设置每条记录的创建和修改日期的问题

asp.net-mvc-3 - 在ASP.NET MVC中本地化/翻译路由

c# - EF Core 8 无法创建 'DbContext' 类型的 ''