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