Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UrlHelper有时不返回基本url_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# UrlHelper有时不返回基本url

C# UrlHelper有时不返回基本url,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我正在创建.NET Core 2.1 web api,并且遇到了UrlHelper的问题。我使用Link方法来确定从一个资源到另一个资源的链接。大多数情况下,它工作正常,但有时生成的字符串缺少基本url 例如: 请求1:http://localhost:1234/api/books?pageNumber=1&pageSize=10OK 请求2:http:///api/books?pageNumber=1&pageSize=10不正常 它在正确和错误的结果之间来回移动,有时它们都是错误的,有时

我正在创建.NET Core 2.1 web api,并且遇到了
UrlHelper
的问题。我使用
Link
方法来确定从一个资源到另一个资源的链接。大多数情况下,它工作正常,但有时生成的字符串缺少基本url

例如:

  • 请求1:
    http://localhost:1234/api/books?pageNumber=1&pageSize=10
    OK
  • 请求2:
    http:///api/books?pageNumber=1&pageSize=10
    不正常
它在正确和错误的结果之间来回移动,有时它们都是错误的,有时它们都是正常的

配置服务:

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

如果您对这里出现的问题有任何想法,我们将不胜感激。

无论如何,请尝试使用IUrlHelperFactory来创建实例UrlHelper,而不是直接创建实例UrlHelper。您有没有找到答案?我们实施了IUrlHelperFactory建议,但这是以降低代码的可维护性为代价的,但至少它给出了正确的URL。该死,我正在使用它,但仍然有这个问题,但只有在容器中运行时。奇怪的
        public string CreateResourceUri(
        ResourceUriType type,
        string name,
        IUrlHelper urlHelper,
        object additionalValues = null)
    {
        dynamic values = CreateValues().Merge(additionalValues);

        switch (type)
        {
            case ResourceUriType.PreviousPage:
                values.pageNumber = values.pageNumber - 1;
                return urlHelper.Link(
                    name,
                    values);
            case ResourceUriType.NextPage:
                values.pageNumber = values.pageNumber + 1;
                return urlHelper.Link(
                    name,
                    values);
            default:
                return urlHelper.Link(
                    name,
                    values);
        }
    }