使用UrlHelper和新的uri .net核心构建链接时崩溃

时间:2018-05-05 04:32:01

标签: .net-core asp.net-core-webapi webapi2

我正在尝试使用我的webapi中.net核心中的IUrlhelper创建一个分页链接。

我收到错误

"值不能为null。参数名称:uriString"

我在启动时有以下代码:

    services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
        services.AddScoped<IUrlHelper>(factory =>
        {
            var actionContext = factory.GetService<IActionContextAccessor>()
                                       .ActionContext;
            return new UrlHelper(actionContext);
        });

然后我有一个我构建分页链接的课程

public class LinkBuilder
{
    public LinkBuilder(IUrlHelper urlHelper,string routeName, PagingInfo pagingInfo)
    {

        var mylink = CreateLink(urlHelper, "GetMovies", pagingInfo.PageNumber, pagingInfo.PageSize);

        etc.....
    }

    private Uri CreateLink(IUrlHelper urlHelper,
                            string routeName,
                            int pageNo,
                            int pageSize)
    {
        //CRASHES ON NEW URI!  "Value cannot be null.
                                Parameter name: uriString"

        return new Uri(
        urlHelper.Link(routeName, 
        new { PageNumber = pageNo, PageSize = pageSize }));
    }

如果执行以下操作,我的链接始终为null。不要得到它!

//注意注入时urlhelper不为空

        var link = urlHelper.Link("getsomething", new { PageNumber = 1, PageSize = 20});

    Any ideas what I am doing wrong?

    thanks

1 个答案:

答案 0 :(得分:0)

找到了我自己的答案。当我构建链接时,路由的名称必须与路由名匹配。