使用Asp.net核心身份和实体框架核心,如何通过它的UserId属性获取asp.net用户对象?我知道可以使用以下方法从HttpContext.User对象获取当前登录用户:
UserManager.GetUserAsync(HttpContext.User)
Run Code Online (Sandbox Code Playgroud)
但是,当管理员登录时,我希望他们能够访问/修改任何用户的数据,以便更新用户电子邮件和PhoneNumbers,默认情况下,这些用户电子邮件和电话号码是asp.net用户对象的一部分.
理想情况下,我希望能够做到这样的事情:
var userRecord = _userManager.GetUserById(model.userId);
//update user record
userRecord.Email = model.Email;
userRecord.PhoneNumber = model.PhoneNumber;
var newRecord = await _userManager.UpdateAsync(userRecord);
Run Code Online (Sandbox Code Playgroud)
但很明显,UserManager.GetUserById()方法目前不存在.
我无法让我发布的ASP.net核心应用程序切换到我的appsettings.production.json文件中使用连接字符串.
我已经设置了launchSettings来为我的开发和生产配置文件使用ASPNETCORE_ENVIRONMENT环境变量.当我切换配置文件并在visual studio中运行它时,我的连接字符串会正确更改.
当我在我的Ubuntu服务器上运行已发布的应用程序时,它不会切换.我在我的服务器上将ASPNETCORE_ENVIRONMENT变量设置为"Production".我还验证了appSettings.json和appSettings.production.json都存在于应用程序的根目录中.
我的appsettings.json文件:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "server=localhost;user id=root;password=dev;database=testdb;sslmode=none",
}
}
Run Code Online (Sandbox Code Playgroud)
我的appsettings.production.json文件:
{
"ConnectionStrings": {
"DefaultConnection": "server=localhost;user id=root;password=prod;database=testdb;sslmode=none"
}
}
Run Code Online (Sandbox Code Playgroud)
我的launchSettings.json文件:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50824/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "home/index",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express (Production)": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "home/index",
"environmentVariables": …Run Code Online (Sandbox Code Playgroud) 我有一个实体,需要在其上跟踪员工工资率的历史记录.employeeRate对象是:
public class EmployeeRate : BaseEntity
{
[Key]
public int EmployeeRateId { get; set; }
public int EmployeeId { get; set; }
public double Rate { get; set; }
}
public class BaseEntity
{
public bool ActiveFlag { get; set; }
public DateTime CreateStamp { get; set; }
public DateTime UpdateStamp { get; set; }
public string LastModifiedBy { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
因此,为了跟踪历史记录,当我"更新"员工费率时,我使用其ID检索所有旧记录并将ActiveFlag设置为false,然后添加具有新工资率且ActiveFlag设置为true的新实体.这是我的这个操作的功能:
private EmployeeRate UpdateRate(EmployeeRate model, string currentUser)
{
var existingRates = _context.EmployeeRates.Where(r => r.EmployeeId == model.EmployeeId).ToList();
foreach(var …Run Code Online (Sandbox Code Playgroud) 我已经升级了我的project.json以使用asp.net核心的新v1.1,现在当我尝试启动IIS Express进行调试时,我收到以下错误:
程序'[8784] dotnet.exe'已退出,代码为-2147450749(0x80008083).
程序'[7352] iisexpress.exe'已退出,代码为0(0x0).
我升级的project.json:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
},
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Routing": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.IdentityModel.Tokens": "5.1.0",
"Microsoft.AspNetCore.Authentication": "1.1.0",
"Microsoft.AspNetCore.Authentication.JwtBearer": "1.1.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
"Microsoft.EntityFrameworkCore": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"SapientGuardian.EntityFrameworkCore.MySql": "7.1.10",
"AutoMapper": "5.1.1"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview4-final"
},
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
Run Code Online (Sandbox Code Playgroud)
也许我错过了我的project.json升级所需的东西?或者其中一个包没有与v1.1合作?任何帮助表示赞赏.
注意:当我改回1.0时,一切运行正常.
在以角度插入或删除数组的情况下,是否可以观察数组,然后获取从数组中添加或删除的对象?我不关心数组中的对象属性,只关心添加或删除的对象本身。所以我相信 $watchCollection 很适合这里,所以它不是一个深度手表。
例如,我将此数组作为双列表框的模型:
$scope.employees = [
{
name: "Bob",
id: "0"
},
{
name: "Carl",
id: "1"
},
{
name: "Bill",
id: "2"
}
];
Run Code Online (Sandbox Code Playgroud)
当我将其中一个移出或移到列表框上(插入/删除)时,列表框将自动更新 $scope.employees。如果我做:
$scope.$watchCollection('employees', function(){
//somehow get changed object
var changedObject = ...;
$scope.changedItems.push(changedObject);
});
Run Code Online (Sandbox Code Playgroud)
我希望能够获取添加/删除的项目,以便我可以使用它或将其保存在某个地方。
javascript 时间库moment.js 的功能是否与您使用的浏览器无关?我已经遇到过 Javascript 原生 Date 对象在不同浏览器(特别是 Chrome 和 IE)之间表现不同(主要是关于时区)的问题。我还阅读了与浏览器无关的 javascript Date 对象的其他问题:
- javascript date.parse 在 Chrome 和其他浏览器中的差异
-等等...
由于 momentjs 是一个 javascript 库,我认为它的功能与正在执行它的浏览器无关。
我想选择每两行并以该模式交替和重复。我怎样才能使用 CSS 做到这一点?
例如....
蓝色行:1、2、5、6、9、10
红行:3,4,7,8
ul{
list-style-type: none;
color: white;
}
li:nth-of-type(odd){
background-color:blue;
}
li:nth-of-type(even){
background-color:red;
}Run Code Online (Sandbox Code Playgroud)
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ulRun Code Online (Sandbox Code Playgroud)
编辑:我忘了添加一个关键点,对不起!这种重复将用于未知长度的 ng-repeat,因此它可以永远持续下去。所以我将无法在 css 中每 2 个显式输入。
这就是我目前在Startup.cs中的ConfigureServices方法中添加DbContext的方法:
public void ConfigureServices(IServiceCollection services)
{
.....
services.AddDbContext<MyDbContext>(options =>
options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));
.....
}
Run Code Online (Sandbox Code Playgroud)
我的连接字符串存储在我的appsettings.json文件中,例如:
{
....
"ConnectionStrings": {
"DefaultConnection": "server=localhost;user id=root;password=root;database=mydb;sslmode=none"
}
....
}
Run Code Online (Sandbox Code Playgroud)
如果我想切换正在连接的数据库,如果它是"开发"与"生产"环境,如何使"services.AddDbContext()"切换数据库?
您如何将表单数据发布到.Net Core中的外部URL?例如,如果我想重新创建此示例请求:
POST
Url: www.googleapis.com/oauth2/v4/token
Content-Type: application/x-www-form-urlencoded
code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=ABCD1234&
client_secret=XYZ1234&
redirect_uri=https://test.example.com/code&
grant_type=authorization_code
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一个示例,该示例显示了发布JSON的示例,但没有表单数据的示例。