私はASP.NETのWebサイトを持っています。別のプロジェクトの埋め込みビューを読み込むことに成功しましたが、実行するためのローカリゼーションを取得できません。これは、起動時のアセンブリからの眺めで正常に動作しますが、埋め込みものをロードするときにエラーメッセージがあります:ASP.NETコアにビューのローカライゼーションを埋め込む
と、InvalidOperationException:「Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer」は登録されているタイプのサービスなしで。
ビューのコードは次の通りである:
_ViewImports.cshtml(埋め込み):
@using Microsoft.AspNetCore.Mvc.Localization
@inject IHtmlLocalizer Localizer
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Index.cshtml(埋め込み)
@{
ViewData["Title"] = Localizer["Home"];
}
<div>
@Localizer["Test"]
</div>
マイstartup.cs (メインプロジェクト内)は次のようになります。
namespace My.Name.Space //Not the real one
{
public class Startup
{
public Startup(IHostingEnvironment env)
{
//Standard builder function
}
public IConfigurationRoot Configuration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
//Add EF DbContext, identity, etc.
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
//Localization
var supportedCultures = GetListOfCultures();
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859
try
{
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
.CreateScope())
{
serviceScope.ServiceProvider.GetService<ApplicationDbContext>()
.Database.Migrate();
}
}
catch { }
}
app.UseStaticFiles();
app.UseIdentity();
// To configure external authentication please see http://go.microsoft.com/fwlink/?LinkID=532715
app.UseMvc(routes =>
{
// Areas support
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
何か不足していますか、それともRC2のバグですか?
グリーティング、