RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-427196

Danila's questions

Martin Hope
Danila
Asked: 2023-11-15 18:00:46 +0000 UTC

展开领事

  • 5

大家好。有人遇到过 consul 部署的问题吗?错误:“来自守护程序的错误 DT1001 错误响应:consul 清单:未找到最新版本:清单未知:清单未知如果错误仍然存​​在,请尝试重新启动 Docker Desktop。” 我用谷歌搜索了该错误,结果发现该图像已过时,他们建议将其更改consul为hashicorp/consul.

链接: https: //github.com/docker-library/docs/pull/2283

我采取的行动: 将 Dockerfile 中的行更改FROM consul为FROM hashicorp/consul/ FROM hashicorp/consul:latest。我在控制台中运行了 docker-compose up 命令docker-compose build --no-cache. Перезапустил Docker Desktop. Запустил в консоли команду 。

它没有帮助并且显示相同的错误。

代码:

docker-compose.yml

version: "3.8"
services:
  auth:
    image: auth
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:5000
    build: 
      context: ./
      dockerfile: ./AuthService/Dockerfile
    depends_on:
      - auth_db
      - elasticsearch
  auth_db:
    image: mongo
    restart: always
    volumes:
      - ./AuthService/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_INITDB_DATABASE: auth

  notification:
    image: notification_service
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:5000
    build:
      context: ./
      dockerfile: ./NotificationService/Dockerfile
    depends_on:
      - notification_db
      - consul-server
      - elasticsearch

  notification_db:
    image: mongo
    restart: always
    volumes:
      - ./NotificationService/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_INITDB_DATABASE: notification_db
  
  account:
    image: account_service
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:5000
    build:
      context: ./
      dockerfile: ./AccountService/Dockerfile
    depends_on:
      - account_db
      - consul-server
      - elasticsearch
  account_db:
    image: mongo
    restart: always
    volumes:
      - ./AccountService/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_INITDB_DATABASE: account_db
  
  statistics:
    image: statistics_service
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:5000
    build:
      context: ./
      dockerfile: ./StatisticsService/Dockerfile
    depends_on:
      - statistics_db
      - consul-server
      - elasticsearch
  statistics_db:
    image: mongo
    restart: always
    volumes:
      - ./StatisticsService/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_INITDB_DATABASE: statistics_db
      
  ocelot:
    image: ocelot
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:5001;http://+:5000
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
    build:
        context: .
        dockerfile: ./OcelotService/Dockerfile
    ports:
      - "8000:5000"
      - "8001:5001"
    depends_on:
      - ocelot_db
      - consul-server
      - elasticsearch

  ocelot_db:
    image: consul:latest
    command: consul agent -dev -log-level=warn -ui -client=0.0.0.0
    hostname: consul
    ports:
      - "8500"
        
  elasticsearch:
    image: elasticsearch:7.10.1
    ports:
    - "9200"
    volumes:
      - ${APPDATA}/ASP.NET/Volumes/Elastic:/usr/share/elasticsearch/data
    environment:
      - xpack.monitoring.enabled=true
      - xpack.watcher.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node 
  
  kibana:
    image: library/kibana:7.10.1
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200

  consul-server:
    build:
        context: .
        dockerfile: ./Consul/Dockerfile
    image: consul-server
    restart: always
    volumes:
     - ./Consul/server.json:/consul/config/server.json:ro
     - ./Consul/certs/:/consul/config/certs/:ro
    command: "agent -bootstrap-expect=1 -client=0.0.0.0"
    ports:
      - "8500:8500"
      - "8600:8600/tcp"
      - "8600:8600/udp"

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./Prometheus:/etc/prometheus
      - ${APPDATA}/ASP.NET/Volumes/Prometheus:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - "9090:9090"

  grafana:
   image: grafana/grafana:latest
   container_name: grafana
   volumes:
     - ${APPDATA}/ASP.NET/Volumes/grafana:/var/lib/grafana
     - ./Grafana/provisioning/:/etc/grafana/provisioning
   environment:
     - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
     - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
     - GF_USERS_ALLOW_SIGN_UP=false
   ports:
     - 3000:3000

docker-compose.dev.yml

version: "3.8"
services:
  auth:
    build: auth
    ports:
      - "27015:5000"
  auth_db:
    build: auth_db
    ports:
      - "27016:27017"

  notification:
    build: notification
    ports:
      - "29960:5000"

  notification_db:
    build: notification_db
    ports:
      - "29900:27017"
  
  account:
    build: account
    ports:
      - "28960:5000"
  account_db:
    build: account_db
    ports:
      - "27017:27017"
  
  statistics:
    build: statistics
    ports:
      - "29500:5000"
  statistics_db:
    build: statistics_db
    ports:
      - "29550:27017"
      
  ocelot:
    build: ocelot

  ocelot_db:
    build: ocelot_db
        
  elasticsearch:
    build: elasticsearch
  
  kibana:
    build: kibana

  consul-server:
    build: consul-server
    ports:
      - "8500:8500"
      - "8600:8600/tcp"
      - "8600:8600/udp"

领事/Dockerfile

FROM hashicorp/consul:latest

ENV CONSUL_KV_INIT_DIR=/var/local/consul-init.d
RUN mkdir -p $CONSUL_KV_INIT_DIR

COPY ./Consul/consul-init.sh /usr/local/bin/

RUN sed -ie 's|^\(set .*\)|\1\n/usr/local/bin/consul-init.sh \&|' /usr/local/bin/docker-entrypoint.sh
COPY ./Consul/init-configs/ $CONSUL_KV_INIT_DIR/

领事/consil-init.sh

set -ue

let "timeout = $(date +%s) + 15"

echo "==> Waiting for Consul"
while ! curl -f -s http://localhost:8500/v1/status/leader | grep "[0-9]:[0-9]"; do
  if [ $(date +%s) -gt $timeout ]; then echo "==> Consul timeout"; exit 1; fi
  sleep 1
  echo "==> Waiting for Consul"
done

echo "==> Load configuration"
cd $CONSUL_KV_INIT_DIR

for json_file in $CONSUL_KV_INIT_DIR/**/*.json; do
  key=$(basename "$json_file")
  subprefix=$(basename $(dirname "$json_file"))
  echo "==> Loading $key from $subprefix"
  consul kv put "$subprefix/$key" @$json_file
done

图片:

控制台 docker-compose build --no-cache

解决方案

c#
  • 1 个回答
  • 68 Views
Martin Hope
Danila
Asked: 2023-04-08 03:49:34 +0000 UTC

更简洁的linq解决方案

  • 5

如何在 Linq 上用一个简洁的表达式替换以下行:

foreach (Company company in companies)
            {
                List<CheckPoint> checkPoints = await _context.CheckPoints
                    .Where(cp => cp.CompanyId == company.Id).ToListAsync();
            }

楷模:

public class CheckPoint
{
    [Key]
    public ulong Id { get; private set; }

    [Column("Name", TypeName = "nvarchar(MAX)")]
    public string Name { get; private set; }

    [Column("CompanyId", TypeName = "decimal(20, 0)")]
    public ulong CompanyId { get; private set; }

    public Company? Company { get; private set; }

    public CheckPoint(string name)
    {
        Name = name;
        CompanyId = default;
        Company = default;
    }
public class Company
{
    [Key]
    public ulong Id { get; private set; }

    [Column("FullName", TypeName = "nvarchar(MAX)")]
    public string FullName { get; private set; }

    public List<User>? Users { get; private set; }

    public List<CheckPoint>? CheckPoints { get; private set; }

    public Company(string fullName)
    {
        Id = default;
        FullName = fullName;
        Users = new List<User>();
        CheckPoints = new List<CheckPoint>();
    }
}
c#
  • 1 个回答
  • 26 Views
Martin Hope
Danila
Asked: 2022-08-28 21:24:00 +0000 UTC

为什么响应体是空的?

  • 0

如果正确输入了登录名和密码,我编写了一个返回所有用户数据的身份验证。这里一切都很好。数据库管理器文件代码:

public static User AuthUser(User user)
    {
        if (sqlConnection.State == System.Data.ConnectionState.Closed)
            sqlConnection.Open();
        try
        {
            SqlCommand command = new SqlCommand(
                $"SELECT * FROM [Users] WHERE login = @login AND password = @password",
                sqlConnection);
            command.Parameters.AddWithValue("login", user.login);
            command.Parameters.AddWithValue("password", user.password);

            SqlDataReader reader = command.ExecuteReader();
            if (reader.Read())
            {
                user.id = Convert.ToInt32(reader.GetValue(0));
                user.lastName = Convert.ToString(reader.GetValue(1));
                user.firstName = Convert.ToString(reader.GetValue(2));
                user.patronymic = Convert.ToString(reader.GetValue(3));
                user.phoneNumber = Convert.ToString(reader.GetValue(4));
                user.address = Convert.ToString(reader.GetValue(5));
                user.role = (Role)Convert.ToInt16(reader.GetValue(8));
            }
                sqlConnection.Close();
                return user;
        }
        catch
        {
            sqlConnection.Close();
            return user;
        }
    }

用户控制器文件代码:

[HttpPost("~/Authentication")]
    public User Authentication(string login, string password)
    {
        return DataBaseManager.AuthUser(
            new User(login, password));
    }

它返回: 在此处输入图像描述

接下来,我想接收运输公司的所有信息,但实际上,将参数传递给我没有任何意义。数据库管理器文件代码:

public static SDEK GetInfoSDEK(SDEK sdek)
    {
        if (sqlConnection.State == System.Data.ConnectionState.Closed)
            sqlConnection.Open();
        try
        {
            SqlCommand command = new SqlCommand(
                $"SELECT * FROM [TransportCompanies] WHERE name = @name",
                sqlConnection);
            command.Parameters.AddWithValue("name", sdek.name);

            SqlDataReader reader = command.ExecuteReader();
            if (reader.Read())
            {
                sdek.id = Convert.ToInt32(reader.GetValue(0));
                sdek.price_km = Convert.ToDecimal(reader.GetValue(2));
                sdek.price_kg = Convert.ToDecimal(reader.GetValue(3));
                sdek.price_insurance = Convert.ToDecimal(reader.GetValue(4));
            }
            sqlConnection.Close();
            return sdek;
        }
        catch
        {
            sqlConnection.Close();
            return sdek;
        }
    }

TransportCompanyController 文件代码:

[HttpGet("~/GetInfoSDEK")]
    public SDEK GetInfoSDEK()
    {
        return DataBaseManager.GetInfoSDEK(new SDEK());
    }

回报: 在此处输入图像描述

我要求它返回一个 SDEK 类的实例,但它没有。我通过调试检查了它 - 它写入并查看所有数据。SDEK 类作为库包含(通过分配)。

问题:我做错了什么?

更新:“显示用户和 SDEK 数据模型”

用户型号:

    namespace DeliveryApp
{
    public enum Role
    {
        User,
        Admin
    }
    public class User
    {
        public int id { get; set; }
        public string lastName { get; set; }
        public string firstName { get; set; }
        public string patronymic { get; set; }
        public string phoneNumber { get; set; }
        public string address { get; set; }
        public string login { get; set; }
        public string password { get; set; }
        public Role role { get; set; }


        public User(string lastName, string firstName, string patronymic, string phoneNumber, string address, string login, string password, Role role = Role.User)
        {
            this.lastName = lastName;
            this.firstName = firstName;
            this.patronymic = patronymic;
            this.phoneNumber = phoneNumber;
            this.address = address;
            this.login = login;
            this.password = password;
            this.role = role;
        }
        public User(string login, string password)
        {
            this.login = login;
            this.password = password;
        }
    }
}

SDEK 型号:

namespace TransportCompany1
{
    public class SDEK
    {
        public int id = -1;
        public string name = "SDEK";
        public decimal price_km = 0;
        public decimal price_kg = 0;
        public decimal price_insurance = 0;

        public SDEK(int id, string name, decimal price_km, decimal price_kg, decimal price_insurance) // СЕРВЕР: Отвечает клиенту, если такая транспортная компания существует.
        {
            this.id = id;
            this.name = name;
            this.price_km = price_km;
            this.price_kg = price_kg;
            this.price_insurance = price_insurance;
        }
        public SDEK() { }
    }
}
c# api
  • 1 个回答
  • 26 Views
Martin Hope
Danila
Asked: 2022-07-10 20:09:47 +0000 UTC

有没有更简洁的方法来检查参数?

  • 1

在 BubbleSort 函数中,我使用了 sortOrder,然后通过 switch-case 进行检查。如果 sortOrder = SortOrder.Asc,则升序,如果 *.Desc - 降序。有没有更优雅的方法来检查 switch-case 变量?

public enum SortOrder
    {
        Asc,
        Desc
    }
    public static class Sorting
    {
        public static void BubbleSort<T>(this T[] array, SortOrder sortOrder = SortOrder.ASC) where T : IComparable<T>
        {
            for (var i = 0; i < array.Length; i++)
            {
                for (var j = 1; j < array.Length - i; j++)
                {
                    
                    if (array[j - 1].CompareTo(array[j]) > 0)
                        Swap(ref array[j - 1], ref array[j]);
                }
            }
        }

事实是我还想做一个快速排序,它将使用递归并不断比较 sortOrder - 不酷。它可以使用显式函数 - BubbleSortAsc,但是,就我而言,它看起来不是很好,并且代码会成倍增加(它不会解决 switch-case 中重复代码的问题)。

我怎样才能做得更好?谢谢你。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Danila
Asked: 2022-07-08 22:08:56 +0000 UTC

设计课程时正确的做法是什么?

  • 2

我想写一个不同种类的课程。原来的版本是:

public static T[] BubbleSort(this T[] array, string sortOrder = "ASC")
{
    if (array.Equals(null))
        return null;

    switch (sortOrder.ToLower())
    {
        case "asc":
            for (var i = 0; i < array.Length; i++)
            {
                for (var j = 1; j < array.Length - i; j++)
                {
                    if (array[j - 1].CompareTo(array[j]) > 0)
                        Swap(ref array[j - 1], ref array[j]);
                }
            }
        break;
    // etc.
}

在我看来,以这种方式使用字符串(参数 2)并不美观,因此我决定使用枚举:

public enum SortOrder
{
    ASC,
    DESC
};

而现在,事实上,问题本身:“在哪里写 enum 更好?”

  • 在单独的文件中?但是最终用户将不得不随身携带两个文件(是的,我想将代码上传到我的 github 存储库)。
  • 课堂内?但是,您必须编写一大行代码:
Sorting<int>.SortOrder.ASC

代替

SortOrder.ASC
  • 在类所在的同一个文件中,但在外面?似乎是的,但是..它看起来很漂亮吗?帮助我决定最好的做法是什么?:)

可执行文件(如果枚举位于单独的文件中或与类位于同一文件中,但在类之外):

int[] array = { 2, 1 };
Sorting<Int32> sortingInt32 = new Sorting<Int32>();
sortingInt32.BubbleSort(array, SortOrder.ASC);

可执行文件(枚举在类内):

int[] array = { 2, 1 };
Sorting<Int32> sortingInt32 = new Sorting<Int32>();
sortingInt32.BubbleSort(array, Sorting<int>.SortOrder.ASC); // Вообще не красиво, согласны?

这就是我的班级的样子:

namespace Sorting
{
    public class Sorting<T>
        where T : IComparable<T>
    {
        // etc.
    }
}

提前致谢!:) PS如果有没有枚举的提案,我会非常感兴趣地考虑它们。

c#
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5