我有一个问题.我在Identity ASP .NET中尝试更改错误消息,我不知道它是怎么做的.我想要更改错误消息 - "已经登录".CreateAsync方法返回此错误消息.请帮我.
我试图通过使用以下帖子中的建议获取瑞典语为Asp.Net Identity的本地化错误消息:如何本地化ASP.NET Identity UserName和Password错误消息?
使用NuGet我下载了德语语言包,然后在dotPeek中打开\ packages\Microsoft.AspNet.Identity.Core.2.0.0\lib \net45\de\Microsoft.AspNet.Identity.Core.resources.dll,然后将其导出到一个新的VS项目:
https://github.com/nielsbosma/AspNet.Identity.Resources.Swedish/
我已将生成的\ Microsoft.AspNet.Identity.Core.resources.dll复制到\ packages\Microsoft.AspNet.Identity.Core.2.0.0\lib \net45\se下的新文件夹.
当我在本地运行我的网站时,我看到Microsoft.AspNet.Identity.Core.resources.dll已被复制到MySite\bin\sv \
但我不能让它工作:(
如果我在我的Web.config中设置:
<system.web>
...
<globalization culture="sv-SE" uiCulture="sv" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
我仍然得到英文默认错误消息.但是,如果我改为德语,我已经从NuGet中包含了我收到德语错误消息.
使用dotPeek我将我的dll与德语进行了比较,除了我的PublicKeyToken = null和德语为"31bf3856ad364e35"之外,它们是相同的.这可能是我无法加载我的dll的原因吗?无论如何为dll设置PublicKeyToken?任何解决方法?
谢谢你的任何指示.
我用谷歌搜索,无法找到任何可能的错误列表,例如"已经收到电子邮件xyz".(我知道那肯定是一个)."名字xyz已被采用." 是另一个(用户名).我在Github上使用的是Microsoft ASP.NET Identity 2.0,而不是版本3.它们似乎只是简单的字符串,似乎没有错误代码或任何东西.我已经查看了Codeplex上的代码,并且似乎没有任何清晰的列表,只是单元测试中的一些模糊片段.
我在我的项目中使用新的会员系统asp.net身份.我想使用电子邮件地址作为用户名,是的,我已经看过这些问题:
配置Microsoft.AspNet.Identity以允许电子邮件地址作为用户名
我知道如何使用电子邮件作为用户名.但我有另一个问题,验证错误消息:
Name xxxxxxxxx@xxxx.com is already taken.
当用户尝试使用现有的电子邮件地址注册时,会出现此消息.因此,我想提供错误消息,而不是此错误消息:
User with the given email address already exist.
那我怎么能在Asp.Net标识中做到这一点?
我在项目中使用ASP.NET Identity作为成员资格系统.创建用户后,我想检查结果,然后返回原始的IdentityResult错误.我该如何更改这些消息?
谢谢.
更新:
public virtual async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
FormsAuthentication.SetAuthCookie(user.UserName, false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
return View(model);
}
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
//I need to change error text message here!
ModelState.AddModelError("", error);
}
}
Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc identity membership-provider asp.net-identity
我使用DataAnnotation验证ASP.NET Core中的模型.但是当我有一个必填字段时,我得到的错误信息是英文错误,如下例所示:
class MyModel {
[Required]
[Display(Name = "Seitentitel")]
public string Title {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个denglish验证错误消息Seitentitel字段是必需的.但我希望用特定语言传达信息,在这种情况下是德语.我想避免ErrorMessage为我的模型的每个必需属性设置.在大多数情况下,默认错误消息很好,但语言错误.
如何设置这些验证消息的语言?
我尝试了这个没有成功:
var supportedCultures = new[] { new CultureInfo("de-DE") };
app.UseRequestLocalization(new RequestLocalizationOptions {
DefaultRequestCulture = new RequestCulture("de-DE"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
Run Code Online (Sandbox Code Playgroud)
如果ASP.NET Core不提供这些翻译,我需要这样的东西:https://stackoverflow.com/a/38199890/5426333但不适用于ASP.NET核心标识,而不是像这种情况下的通用验证消息当缺少必填字段时.
c# localization asp.net-core-mvc asp.net-core asp.net-core-localization
我改述了我之前提出的另一个问题.
我有一个基本的C#Asp.net MVC 5应用程序.我通过以下代码创建了一个帐户(由Vs 2013中的模板提供)
protected async Task<bool> CreateAccountAndAddRoleAsync(UserManager<ApplicationUser> userManager, ApplicationUser user, string password, string role)
{
var result = await userManager.CreateAsync(user, password);
if (result.Succeeded)
{
try
{
var roleResult = await userManager.AddToRoleAsync(user.Id, role);
if (roleResult.Succeeded)
{
//await SignInAsync(userManager, user, isPersistent: false);
return true;
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
AddErrors(result);
return false;
}
protected void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当已经使用用户名(或任何其他错误消息)时,消息是英文的.如
名称xxx已被采用
代替
L'identifiant xxxestdéjàutilisé
问题是该消息是由框架提供的
var …
我想为 asp.net core 2.1 项目以西班牙语提供身份用户名和密码错误消息的本地化字符串,因为它总是以英语显示消息。我按照http://www.ziyad.info/en/articles/20-Localizing_Identity_Error_Messages中的说明进行了尝试,但对我不起作用。
谢谢