我已在 Docker 上部署了 ASP.NET Core Web API。我的应用程序还与 Docker 容器中的 SQL Server 交互。
这是我的docker-compose.yml文件:
version: '3'
services:
db:
image: mcr.microsoft.com/mssql/server
container_name: db
ports:
- 1533:1433
environment:
- TZ=Asia/Tehran
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=******
user: root
volumes:
- ./mssql:/var/opt/mssql/data
kava-service:
image: service:1.0.0
container_name: service
expose:
- 9001
ports:
- 9001:9001
depends_on:
- db
environment:
- ASPNETCORE__ENVIRONMENT=Production
- TZ=Asia/Tehran
- AUTO__MIGRATE=true
- ConnectionStrings__BusinessDomainConnectionString=Server=db;Initial Catalog=Kava.BusinessDomain;User ID=sa;pwd=****;MultipleActiveResultSets=true;
- ConnectionStrings__RecordsConnectionString=Server=db;Initial Catalog=Kava.Records;User Id=sa;pwd=****;MultipleActiveResultSets=true;
Run Code Online (Sandbox Code Playgroud)
当我运行 docker 容器(使用docker-compose)时,它工作正常。但是,如果我重新启动此容器,它就不起作用,并且应用程序将退出并显示以下消息:
用户“sa”登录失败。原因:无法打开显式指定的数据库“Kava.BusinessDomain”[客户端:172.18.0.4] kava-service
未处理的异常。Microsoft.Data.SqlClient.SqlException(0x80131904):数据库“Kava.BusinessDomain”已存在。选择不同的数据库名称。
当我删除这个数据库时,一切正常,但我不想删除它。
在开发中(我的意思是 Visual Studio)一切都很好,但在生产中(Docker),迁移无法按预期进行。
这是我的迁移命令: …
c# docker entity-framework-core asp.net-core-webapi entity-framework-migrations
我有Asp.NET WebApi作为业务层.我想通过简单地调用业务控制器来调用它的方法.像这样的东西:(但我不能像服务参考那样添加这个webapi)
Business.API.UserController Users = new Business.API.UserController();
Users.GetAllUser();
Run Code Online (Sandbox Code Playgroud)
以前我正在使用WCF Web服务,我只能通过"添加服务引用"添加它并设置一些端点来创建Web服务实例.我不能在WebAPI中做到这一点(我认为).我已经阅读了很多关于它的文章,但大多数都是关于通过HttpRequest调用它的方法.通过这种方式 :
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:38104/");
client.DefaultRequestHeaders.Accept.Clear();
HttpResponseMessage response;
response = await client.GetAsync("api/Weather");
if (response.IsSuccessStatusCode)
{
WeatherClient[] reports = await response.Content.ReadAsAsync<WeatherClient[]>();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为使用Web服务是荒谬的.我错了还是我有问题?
一个在这里临时存储我的输入值的类。
namespace App2
{
class methC
{
public string tb1 { get; set; }
public string tb2 { get; set; }
public string tb3 { get; set; }
public string tb4 { get; set; }
public string tb5 { get; set; }
public string tb6 { get; set; }
public methC(string tb1, string tb2, string tb3)
{
this.tb1 = tb1;
this.tb2 = tb2;
this.tb3 = tb3;
//this.right1 = right1;
//this.right2 = right2;
//this.right3 = right3;
//this.Box = Box;
//this.Grade = …Run Code Online (Sandbox Code Playgroud)