小编Jay*_*Jay的帖子

尝试激活时无法解析“Microsoft.AspNetCore.Mvc.IUrlHelper”类型的服务

我试图将代码从控制器分离到我创建的服务。我所做的是创建一个带有接口 IUserService 的用户服务。

将 RegisterUser 代码从直接控制器移动到 UserService,我得到的下一个挑战是直接与控制器一起使用的 Url 不能与服务一起使用。

这段从 Controller 到 Service 的代码已更改如下:

如果在控制器中

var callbackUrl = Url.EmailConfirmationLink(user.Email, token, model.contactno, Request.Scheme);
Run Code Online (Sandbox Code Playgroud)

从控制器更改为服务:

  private IUrlHelper _urlHelper;

    public UserService (IUrlHelper urlHelper, HttpRequest request) {
_urlHelper = urlHelper;
}
Run Code Online (Sandbox Code Playgroud)

这是构造函数,

在方法中我这样称呼它:

        var callbackUrl = _urlHelper.EmailConfirmationLink (user.Email, token, U.Email, _request.Scheme);
Run Code Online (Sandbox Code Playgroud)

我在 Startup.cs 的 DI 中这样提到:

services.AddScoped<IUserService, UserService>();
Run Code Online (Sandbox Code Playgroud)

编译时没有异常。在运行时,它抛出以下异常:

Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Mvc.IUrlHelper' while attempting to activate 'erp.Services.UserService'.
Run Code Online (Sandbox Code Playgroud)

不是很清楚到底要做什么。

这是完整的堆栈跟踪,可以更仔细地查看错误。好吧,我不能说确切的行,因为我不是在调试,而只是从日志中复制: …

c# asp.net-core

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

asp.net-core ×1

c# ×1