1.一般情况下,API 接口开发的时候,无论是使用配置文件或硬编码的形式配置读取数据库连接字符串都好。多数情况下,都是使用配置文件的形式,且配置使用的字符串是有SQL 账户及密码的方式访问数据库
1.1 例如,api 接口开发完成后,sql 账户及密码是配置在 appsettings.json 文件中供程序读取。一般在配置文件中,大多数情况是配置了账户密码的字符串连接数据库服务器。部署完成后,访问是无问题的。
appsettings.json 文件
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"DynamicApiControllerSettings": {
"CamelCaseSeparator": ""
},
"ConnectionStrings": {
"Default": "Server=localhost;Database=ACIAdmin_Nestle;User=sa;Password=123;MultipleActiveResultSets=True;"
}
}
- Server 服务器地址
- Database 访问的数据库
- User 数据库账户
- Password 数据库密码
- MultipleActiveResultSets=True 使数据库连接复用,防止数据库的连接资源被耗尽
1.2 使用以上有sql 账户及密码的字符串,把API 部署在IIS后,测试调用接口,返回数据正常,无问题。
2. 那么,在特殊情况下,如果SQL Server 不提供SQL 账户及密码,只能使用默认的管理员账户,即Windows 身份验证登录访问数据库
2.1 那么 appsetings.json 配置文件就需要配置信任的连接字符串,即该配置文件中,数据库连接字符串,无须配置账户密码
appsetings.json 文件
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"DynamicApiControllerSettings": {
"CamelCaseSeparator": ""
},
"ConnectionStrings": {
"Default": "Data Source=.\\SQLEXPRESS;Initial Catalog=ACIAdmin_Nestle;Integrated Security=True;MultipleActiveResultSets=True;"
}
}
- Data Source 服务器地址,完整的服务器地址会包含机器名和实例名称。本地访问,一般使用.\\ 数据库实例,或者直接 . 访问
- Initial Catalog 连接的数据库
- Integrated Security=True 集成验证,也就是使用Windows 验证的方式去连接到数据库服务器
- MultipleActiveResultSets=True 使数据库连接复用
2.2 更改配置文件完成后,需要重启当前接口。重启步骤,需要先停止,再重启。
配置文件更改后,必须要停止,重启。不能直接点击 重新启动。否则更改的配置文件还处于未生效的状态
2.3 如图,访问接口时报错,提示登录失败。
3. 解决方法:进入到IIS 应用程序池,找到当前部署的API ,设置当前API 以Windows 账户的身份运行。该账户也可以是分配的域账户
3.1 首先进入到IIS 应用程序池,选中当前部署的API,打开高级设置
3.2 打开高级设置后,找到进程模型,更改标识
3.3 更改标识,选择自定义账户。输入电脑Windows 账户和密码或者域账户密码
3.4 输入完成后,保存设置。接着打开 网站选项
3.5 在浏览器输入API 地址,浏览接口测试数据已正常
4. 其他错误集合
4.1 HTTP Error 500.30
如部署后显示该错误,可能是由于配置文件服务器地址有误,修改正确后,该错误没有了。可能是由于数据库连接字符串不正确引发的异常
4.2 部署正常,运行调用接口后,显示找不到网络名
1.该错误也是由于连接的服务器地址有误引起的。如果是本地,一般连接数据库数据服务,是 .\\ 实例名称,就需要检查该实例名称是否正确。如果是 xxx\xxx 表示就需要检查机器名\实例名 是否正确。