为什么会出现这个错误呢?dotnet core mvc 本地化

Myr*_*dor 6 localization asp.net-core-mvc

我正在尝试本地化我的 .Net Core 2.2 MVC 网站,我创建了一个测试项目并复制并粘贴了这些说明:https ://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization?view= aspnetcore-2.2

之后我尝试获取本地化字符串并继续 www.../Info/TestLoc

信息控制器:

public class InfoController : Controller
{
    private readonly IStringLocalizer<InfoController> _localizer;
    private readonly IStringLocalizer<SharedResource> _sharedLocalizer;

    public InfoController(IStringLocalizer<InfoController> localizer,
                   IStringLocalizer<SharedResource> sharedLocalizer)
    {
        _localizer = localizer;
        _sharedLocalizer = sharedLocalizer;
    }

    public string TestLoc()
    {
        string msg = "Shared resx: " + _sharedLocalizer["Hello!"] +
                     " Info resx " + _localizer["Hello!"];
        return msg;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

处理请求时发生未处理的异常。InvalidOperationException:尝试激活“Localization.Controllers.InfoController”时无法解析类型“Microsoft.Extensions.Localization.IStringLocalizer`1[Localization.Controllers.InfoController]”的服务。

现在我用谷歌搜索了该错误,发现当您未分配类型时会发生此错误。我正在这样做。

我现在真的一无所知,因为我只是复制并粘贴了整个微软教程,但它不起作用。

我希望你们能理解我的问题,并希望你们能帮助我。

预先致谢 我非常感谢您花时间阅读本文并帮助我。

问候 Nico 又名 Myridor

nik*_*ovn 10

一个大胆的猜测,因为您从未发布过启动文件,但是您是否复制+粘贴并忘记包含此代码片段?

services.AddLocalization(options => options.ResourcesPath = "your-translations-folder");
Run Code Online (Sandbox Code Playgroud)


小智 -1

提到的错误表明注入没有发生,即.net core无法注入服务,因为它没有任何相应的实现。如果您没有复制startup.cs 文件的更改,就会发生这种情况。(如果您手动复制文件)