前言

开发时一定要用管理员模式打开VS或者VSCODE进行开发,同时不要在nuget上直接下载,要去github上下载源代码调试。第一方便调试,第二Surging迭代较快,nuget版本往往不是最新的。

错误

问题:fail: Surging.Core.DotNetty.DotNettyServerMessageListener[0] 服务主机启动失败XXX

  1. 使用netstat -ano命令查看报错的端口是否被占用或者是不是当前vs权限不够,不够请用管理员模式打开
  2. 新版本中不要使用option.UseDotNettyTransport();该方法已过时,如果在Program中再调用的话会有冲突。

    问题:Generic types are not valid arg_paramname_name

接口不支持泛型类型,就是说不能这么写

    [ServiceBundle("api/{Service}")]public interface IOracleDBServcie : IServiceKey{Task<List<T>> Query<T>(string sql);Task<T> ExecuteScalar<T>(string sql);Task<int> Execute(string sql);}

要写成这样,这还是挺坑的,不同的查询得定义不同的类型

    [ServiceBundle("api/{Service}")]public interface IOracleDBServcie : IServiceKey{Task<List<ROUTE_SERVICE_TABLE>> QueryRouteService(string sql);Task<List<SERVICE_MASTER_TABLE>> QueryServiceMasterTable(string sql);Task<int> ExecuteScalar(string sql);Task<int> Execute(string sql);}

问题:A suitable constructor for type 'xxx' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor

出现这个错误你肯定看了网上一些吊人的文章,跑不起来就往网上放,原因是因为Startup,在使用UseStartup()的时候他会判断是否是继承自IStartup还是用的标准的Startup,但网上用的那个是既不是标准的也没有继承IStartup所以报错了,解决方法:换成.netcore项目自己生成的Startup,或者继承IStartup

public class Startup : IStartup

问题:One or more errors occurred.由于目标计算机积极拒绝,无法连接

看下报错的类,比如是在这个类ConsulServiceCacheManager中报错那就是Consul没有联上,看下有没有启动consul或者是地址端口配置的对不对。在Rabbitmq中报错,那就是RBMQ没有联上,一样检查连接
。如果是部署在docker中出现 这个错误,那就是映射的ip和端口不对

开发调试

问题:在代理方法上打了断点进行调试,每次都很快的返回但取不到返回值一直是null

这是由于Surging熔断中的超时配置ExecutionTimeoutInMilliseconds该值默认是一秒,调试的时候手速慢点就会立即返回,所以这个值建议设置成60000(1分钟)

问题:循环任务中在代理方法上打了断点进行调试,刚开始正常但后来每次都很快的返回但取不到返回值一直是null

同样也是熔断的限流配置MaxConcurrentRequests问题,查下你是不是在循环中用了异步或者是用的Parallel.ForEach这类来进行循环,默认最大并发是20,超过这个值就会炸掉,设置的高一点问题解决
下面附上配置字段的一些注解

部署

问题:Docker中部署时配置文件内容未生效

查看你程序中是怎么引用的,可能是反斜杠的问题
错误写法:build.AddCPlatformFile("${surgingpath}|Configs\\surgingSettings.json", optional: false, reloadOnChange: true);
正确写法:build.AddCPlatformFile("${surgingpath}|Configs/surgingSettings.json", optional: false, reloadOnChange: true);

Docker中服务单独部署时的命令

#docker run --name surgingserver --env Mapping_ip=192.168.249.162 --env Mapping_Port=198 --env RootPath=/app --env
Register_Conn=192.168.249.162:8500 --env EventBusConnection=172.17.0.4 --env Surging_Server_IP=0.0.0.0 -it -p 198:198 surgingserver

配置说明
Mapping_ip:映射的外部IP(环境变量)
Mapping_port:映射的外部端口(环境变量)
RootPath:业务模块存储的根路径(环境变量)
Register_Conn:注册中心地址(环境变量)
EventBusConnection:eventbus 地址(环境变量)
Surging_Server_IP:容器内部IP(环境变量)

通过Docker-compose进行部署

这种方式我只发现了 一个问题,build的内容这么写有问题

service_datainteract:build:context: .dockerfile: Service_DataInteract/Dockerfilecontainer_name: service_datainteract

正确写法,我不知道是不是我操作有问题,反正我这边部署的时候有个问题这样写就好了

service_datainteract:build:context: ./Service_DataInteractdockerfile: Dockerfilecontainer_name: service_datainteract

结语

我整个开发的时候问题就这么多,可能有些没忘了,总体来说还是比较简单的。
另外比较可惜的是Surging出完2.0就不更新了,作者跑路了。。。。后面只能自己在上面完善了

微信关注我哦!(转载注明出处)

转载于:https://www.cnblogs.com/ShaoJianan/p/11429681.html

Suring开发集成部署时问题记录相关推荐

  1. Jenkin持续集成部署-Jenkins常用插件篇

    Jenkin持续集成部署-Jenkins常用插件篇 前言 1. maven插件 2. pipeline 3. SSH 4. Docker 5. Blue Ocean 6. 自定义配置JDK 前言 本篇 ...

  2. java native 开发环境搭建_Java3D 集成开发环境部署与配置(含实例)

    Java 3D开发相关的准备: 第一:下载Java 3D库 参考网址二: 第二:下载Java 3D实例 第三:配置集成开发工具(例如eclipse.Myeclipse8.6等)的Java 3D开发环境 ...

  3. python开发部署时新增数据库中表的方法

    在项目版本让运维部署时,涉及到数据库表的增加问题,想了一下,可以有四种方法 1.使用SQLAlchemy的db.create_all()方法 # -*- coding:utf-8 -*- from f ...

  4. CI持续集成系统环境---部署Jenkins完整记录

    最近在看CI/CD集成的相关部分,发现几篇好文,转载分享一波. 来源网络:[原创]CI持续集成系统环境---部署Jenkins完整记录 - 散尽浮华 - 博客园 Jenkins通过脚本任务触发,实现代 ...

  5. 部署开源项目记录 - 部署seata时遇到的问题

    在部署一个开源项目时,本地调试遇到seata的服务一直没有找到,于是开始排查. 首先是将所有组件docker-compose发布到云服务器,接下来本地启动应用,控制台一直报错. ERROR 2968 ...

  6. 大厂如何开发和部署前端代码?淘宝8年案例解读

    在加入淘宝后,经历了大大小小的开发和部署方式的更迭,同时也有幸在整个的变革潮流中参与过其中的一些能力的建设.今天从一个亲历者的角度,通过自身经历与向同事考究,从"13年石器时代". ...

  7. Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】

    转自:http://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-d ...

  8. 如何开发并部署Solana智能合约

    如果你想学习如何开发Solana智能合约和项目,那么你来对地方了. Solana是一个新兴的.高性能的且无许可的公链,它提供了快速.经济且可扩展的交易体验,并且它还支持使用Rust,C++和C语言来编 ...

  9. 轻量级JavaWeb开发环境部署

    本文章是结合轻量级JavaWeb企业级应用实战所写的学习总结记录文章,开发环境部署文章仍然使用的是我的旧文章习惯,在下一章我会使用新的文章书写习惯来更清晰和简便的记录 Tomcat的安装 tomcat ...

最新文章

  1. 混合云是企业IT的未来吗?
  2. Could not load type 'System.Web.Mvc.ViewPagedynamic' in asp.net mvc2 after publishing the website
  3. python sanic orm_基于sanic的微服务框架 - 架构分析
  4. 信息学奥赛一本通C++语言——1060:均值
  5. 【PL/SQL】测试函数时,日期参数的输入格式
  6. GateWay程序分析04_Delay.h
  7. 最新中科院分区2020_最新中科院分区电气领域SCI期刊
  8. 【渝粤教育】电大中专Office办公软件 (3)作业 题库
  9. 各种隐藏WebShell、创建、删除畸形目录、特殊文件名的方法
  10. note 8 字符串
  11. build.prop文件详细赏析
  12. 你是真的“C”——宏与函数的英雄本色
  13. 【Day35 文献精读】Causal contribution of primate auditory cortex to auditory perceptual decision-making
  14. 主流的深度学习优化方法(SGD,SGDM,Adagrad,RMSProp,Adam)
  15. ZLG 开源 GUI 引擎 AWTK 1.6 发布
  16. 人脸识别技术开发解决方案,人脸识别智慧校园应用开发
  17. idea Translation IP 地址无法访问
  18. 软件架构设计原则-DIP依赖倒置原则
  19. 【IDEA】全局护眼豆沙绿(护眼色)
  20. jquery 添加transform样式

热门文章

  1. oracle 9i net基本配置
  2. c++.net 托管类封装非托管类
  3. android studio github 项目导入问题
  4. Oracle 基础之数据库管理
  5. Windows Server 2008 R2 活动目录服务部署 (一)
  6. WCF基础知识问与答
  7. 使用windbg定位内存问题【入门级】
  8. git中Please enter a commit message to explain why this merge is necessary.
  9. Nginx教程--02.Nginx虚拟主机的配置
  10. Android错误之--activity_main cannot be resolved or is not a field