InvalidOperationException: Unable to resolve service for type 'WebApplication3.Models.backtestContext' while attempting to activate 'WebApplication3.Controllers.SysUsersController'.
Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServ
以上为操作中的错误,下面将会提供解决方案:
2019创建mvc自动生成代码比2017简单多了,
1、 新建项目“eco”,选择“web应用程序(模型视图控制器)”,身份验证为:不进行身份验证。
2、 在【程序包管理控制台】执行命令:
Scaffold-DbContext "server=127.0.0.1;uid=root;pwd=root;database=backtest" Pomelo.EntityFrameworkCore.Mysql -OutputDir Models –Force
ok,就这么简单,但是,运行起来,还是会出现问题,就是本文一开始的蓝色错误提示,查了很多资料,见到有高人的解决方法:
应用方法一:
在 public void ConfigureServices(IServiceCollection services)里面添加:
services.AddTransient<WebApplication1.Models.backtestContext>();
就这么简单。
应用方法二:(推荐)
在 public void ConfigureServices(IServiceCollection services)里面添加:
Services.AddDbContext<backtestContext>(m => m.UseMySql("server=127.0.0.1;uid=root;pwd=root;database=backtest", Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.21-mysql")));
应用方法三:
声明一个新类继承backtestContext
public class DataBase:backtestContext
private string _connectionstring = string.Empty;
public DataBase( string connectionString):base ()
_connectionstring = connectionString;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
if (!optionsBuilder.IsConfigured)
optionsBuilder.UseMySql(_connectionstring, Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.21-mysql"));
然后在 public void ConfigureServices(IServiceCollection services)里面添加:
builder.Services.AddTransient<DataBase>(m =>
return new DataBase("server=127.0.0.1;uid=root;pwd=root;database=backtest");
InvalidOperationException: Unable to resolve service for type 'WebApplication3.Models.backtestContext' while attempting to activate 'WebApplication3.Controllers.SysUsersController'.Microsoft.Extensi...
昨天已经将数据库文件添加到vs中,补充一点,像昨天那种连接是与你的数据库管理系统工具分离的(过程有分离操作),即在数据库管理工具打开并没有该数据库了(我暂时叫它分离式连接)。下面先说此种连接的代码实现:
首先要确定连接到那个数据库,要不然会默认连接到数据库系统中的 master 数据库,如下图所示。...
最近在做一个数据库的综合性实验,我之前用的都是Oracle的SQL developer来设计数据库,所以想尝试一下用SQL server进行设计,不得不说SQL用起来更方便,创建表格直接填写id和数据段类型就可以了。好了,说正经事,教程开始。
首先打开vs2019顶部的工具,点击链接到数据库。
选择sql server:
下载好并配置好一个数据库后,接下来就是用c#连接数据库了。下面是我的连接代码
class Dao
SqlConnection sc;
public class OracleHelper
private static string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));" +
4.打开程序包应用控制台
5.输入install-package mysql.data -version 6.10.8 然后按回车键 输入 install-package mysql.data.entity -version 6.10.8 然后按回车键
6.下载版本为1.2
记 NetCore 5.0+ 连接MySql数据库趟过的坑嘿!有坑!找找出处总结
嘿!有坑!
最近需要为调度算法写一个WebApi接口,咦!这个有底货呀,改一改就可以了,抽出点时间可以把它分层,这样以后多个类似项目都可以来用,省事呀…
然而,在新建项目的时候,下拉框里那是多了好几位兄弟啊…(想想我的代码还在2.0时代),好吧(~ _ ~),升级!
建好项目,把代码复制过来,红杠杠?点掉,生成…噹!大红叉!!!
找到错误列表,Pomelo.EntityFrameworkCore.MySql 3.2.4与Mi
此框架可自动生成SpringMvc+mybatis框架结构数据库采用的是mysql用户可以自行更改成自己需要的数据库,使用时将本项目导入myeclipse或eclipse中,更改项目名称为
你自定义的项目名称后在Test包中有2个java类GeneratorConfig,AutoGenerator ,其中GeneratorConfig中配置的是数据库以及包设置的配置信息,使用的时候需要
自己进行改动,AutoGenerator为main方法类,修改完配置信息后执行此java类则可生成相应的代码,此自动生成工具生成项目结构为src下自定义的包在自定义的包下有bean,
controller,dao,mapper,service,在webRoot目录下会生成back文件夹生成的相应的jsp文件会在此文件夹下。(注意:一定要有webRoot文件夹切记不可用WebContent代替)
前段时间被数据库连接字串折磨得很惨,那个自动生成连接字符串的网站生成的字串还有点问题。最后解决还是通过VS2008自己的功能实现的。
下面说一说怎么通过VS2008自动生成数据库连接字串。
1、添加通过“服
首先,我们需要一个AdminController作为后端管理员的控制器。在该控制器中,我们将实现RSA加密登录和其他相关功能。
1. 首先,我们需要在MySQL数据库中创建一个名为admin的表,用于存储管理员的信息,包括用户名和RSA公钥。
CREATE TABLE admin (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
pubkey VARCHAR(200) NOT NULL
2. 在AdminController中,我们需要编写一个login方法,用于接收前端传递的加密后的用户名和密码,并进行解密和验证。该方法的具体代码如下:
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> login(@RequestParam("username") String username, @RequestParam("password") String password) throws Exception {
Map<String, Object> result = new HashMap<>();
// 解密用户名和密码
String decryptedUsername = RSAUtils.decryptByPrivateKey(username, privateKey);
String decryptedPassword = RSAUtils.decryptByPrivateKey(password, privateKey);
// 查询管理员信息
Admin admin = adminService.getByUsername(decryptedUsername);
if (admin == null) {
// 用户名不存在
result.put("success", false);
result.put("message", "用户名不存在");
} else {
// 验证密码
if (admin.getPassword().equals(decryptedPassword)) {
// 登录成功
result.put("success", true);
result.put("message", "登录成功");
} else {
// 密码错误
result.put("success", false);
result.put("message", "密码错误");
return result;
在该方法中,我们首先使用RSAUtils类中提供的decryptByPrivateKey方法解密用户名和密码。然后,我们查询数据库中是否存在该用户名的管理员信息。如果存在,我们比较密码是否正确。最后,根据验证结果返回相应的信息。
3. 在AdminController中,我们还需要编写一个方法,用于生成RSA密钥对,并将公钥存储到数据库中。该方法的代码如下:
@RequestMapping(value = "/generateKeyPair", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> generateKeyPair() throws Exception {
Map<String, Object> result = new HashMap<>();
// 生成RSA密钥对
KeyPair keyPair = RSAUtils.generateKeyPair();
privateKey = RSAUtils.getPrivateKey(keyPair);
String publicKey = RSAUtils.getPublicKey(keyPair);
// 将公钥存储到数据库中
Admin admin = adminService.getById(1);
admin.setPubkey(publicKey);
adminService.update(admin);
result.put("success", true);
result.put("message", "RSA密钥对生成成功");
return result;
在该方法中,我们首先调用RSAUtils类中提供的generateKeyPair方法生成RSA密钥对,然后使用getPrivateKey和getPublicKey方法获取私钥和公钥。接下来,我们将公钥存储到数据库中。在本例中,我们只存储了一个管理员的公钥,因此使用了adminService.getById(1)获取管理员信息。实际应用中,可以根据需要进行修改。
4. 最后,我们需要编写一个用于获取公钥的方法,供前端进行加密传输。该方法的代码如下:
@RequestMapping(value = "/getPublicKey", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getPublicKey() throws Exception {
Map<String, Object> result = new HashMap<>();
// 查询管理员信息
Admin admin = adminService.getById(1);
result.put("success", true);
result.put("publicKey", admin.getPubkey());
return result;
在该方法中,我们查询数据库中存储的管理员信息,获取其公钥并返回给前端。
通过以上代码实现,我们就可以使用MVC模式进行后端管理员RSA加密登录了。