• [其他问题] 华为鲲鹏920 5220 内核4.14.0-115.el7a.0.1.aarch64 系统:centos 7.6.1810(altarch)如何安装dotnet5和dotnet7
    安装完dotnet后执行dotnet --info报错,  执行dotnet --list  又没问题 ,大概意思libicuil8n..so.50这个文件有问题,但又找不到正常文件cannot get symbol ucol_setMaxVariable_50 from libicui18n error:/lib64/libicuil8n..so.50: undefined symbol:ucol_setMaxVariable_50 Aborted
  • [问题求助] linux发布之后找不到数据库
    开发是用windows开发的,发版是Linux环境,Windows环境发版没有问题【主库】Next recovery time: 2024/1/15 17:50:50 (ERROR [01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/psqlodbcw.so' : file not found)【主库】Next recovery time: 2024/1/15 17:41:38 (ERROR [01000] [unixODBC][Driver Manager]Can't open lib 'PostgreSQL Unicode' : file not found)
  • [问题求助] Can't open lib 'PostgreSQL Unicode' : file not found
    .net windows 开发好了,都是通的,linux环境发布之后为什么连不上数据库了 ? 装上了linux的驱动 但还是一直找不到文件  是开发的链接字符串也要改嘛
  • [云享读书会] Day1ASP.NET Core 基础
    .net core 开源跨平台,集成当前各种流行的技术框架;.net 6为长期支持版本,.net core 2/3即将关闭支持;中间模式是非常优秀的设计和特色,next(),可无限的加中间处理过程;模块化是非常好的设计;适合各类网页、iot、桌面、app的运用开发,适合云原生的开发;云原生开发是一个庞大的开发体系,并不是单单的某个开发语言或环境;devops是个大趋势;
  • 云享读书会《深入浅出ASP.NET Core》
    https://developer.huaweicloud.com/signup/2e4da6016dac4fb18d20e05fa0fd72bc 有邀请活动
  • [云享读书会] 【奖品已于7月22日邮寄】【云享读书会第11期】《深入浅出ASP.NET Core》专家坐堂Q&A,还有礼品送不停哦~
    始活动前,请先报名本期读书会https://developer.huaweicloud.com/activity/reading_11.html--------------------------------------------------------------开发者,你好哟~华为云 · 云享读书会 第11期 它来了 !本期领读书籍为《深入浅出ASP.NET Core》由领读书籍原作者、华为云MVP、微软MVP、华为云云享专家、Microsoft Tech Summit 讲师、52ABP框架作者——梁桐铭老师,带你精读这本深入浅出ASP.NET Core!经过老师的视频领读,如果你有相关知识收获,欢迎在此帖留下你的读书笔记~获奖信息公示(公示期截止7月5日)优秀问答奖云之山zekelove幸运奖Allen2000张辉禄仁恝孙小北仲劲抽奖过程详见附件。恭喜以上开发者获得活动奖励,请点击下方链接填写获奖信息,请于7月20日前完成填写,过期视为弃奖哦~如有任何疑问可以和小助手联系~https://devcloud.huaweicloud.com/expert/open-assessment/qtn?id=3d3d196636fc4df9874cd247e36418bd&utm_source=ASPNetCore活动时间2021.06.20 - 2021.06.2702. 回复内容要求1. 可以提出您在课程学习中产生的任何疑问或者问题,也可以是您产生的深刻思考,我们统统欢迎;2. 禁止抄袭或复制读书笔记帖的任何内容;3. 您也可以参考以下互动话题,与领读专家和其他同学互动交流;4. 回帖时请务必留下你的微信昵称和华为云账号。03. 互动话题请说说您在本次课程中的收获04. 注意事项1. 小助手会在活动结束后按续完成审核,并增加活动积分20活动积分/人,优质回复额外增加50或100活动积分/人;2. 本次活动通过参与专家坐堂Q&A,可获得的积分上限为120分;3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:读书笔记>自测题>专家Q&A>其他;5. 其他积分获取方式请查看活动社群公告;6. 其他未说明事项请参照 云享读书会《深入浅出ASP.NET Core》05. 参与奖励针对活动时间内提交的有效读书笔记,领读专家将根据回复质量综合评选2位优秀奖获奖者,并奖励提交人 公牛插排魔方 一个同时抽取5位幸运奖获奖者,奖励 手机支架 一个(与优秀奖不兼得)06. 关于云享读书会每期云享读书会活动,会选取一本技术相关的畅销书籍,由原作者/行业专家提炼书籍精华,在读书会的专属微信社群中,每日输出精华知识的领读视频,帮助大家快速积累专业知识。活动期间会设置每日自测题、结业实践任务、提交读书笔记三种积分获取任务,并根据活动结束后的积分排行发放活动奖励。07. 加入学习社群然后添加小助手微信,备注“NET Core”加入学习社群。
  • [云享读书会] 【奖品已于7月22日邮寄】【云享读书会第11期】《深入浅出ASP.NET Core》读书笔记征集,更有礼品相送~
    开始活动前,请先报名本期读书会https://developer.huaweicloud.com/activity/reading_11.html--------------------------------------------------------------开发者,你好哟~华为云 · 云享读书会 第11期 它来了 !本期领读书籍为《深入浅出ASP.NET Core》由领读书籍原作者、华为云MVP、微软MVP、华为云云享专家、Microsoft Tech Summit 讲师、52ABP框架作者——梁桐铭老师,带你精读这本深入浅出ASP.NET Core!经过老师的视频领读,如果你有相关知识收获,欢迎在此帖留下你的读书笔记~获奖信息公示(公示期截止7月5日)最佳读书笔记奖励张辉花溪孙小北积分排名1~5名昵称Day1Day2Day3Day4Day5测试题1测试题2测试题3测试题4测试题5互动答疑总成绩孙小北 100100100100100100100100100100601060RabbitCloud100100100100100100100100100100601060allen2000100100100100100100100100100100601060zekelove100100100100100100100100100100601060夏暖100100100100100100100100100100601060积分排名6~15名张辉100100100100100100100100100100201020禄仁恝100100100100100100100100100100201020iolink1002100100100100100100100100100100201020仲劲100100100100100100100100100100201020AAAI100100100100100100100100100100201020HB168810010010010010010010010010075401015云水不言10010010010010010010010010010001000花溪10010010010010010010010010010001000Ethins10010010010010010010010010010001000yjh879238 10010010010010010010010010010001000恭喜以上开发者获得活动奖励,请点击下方链接填写获奖信息,请于7月20日前完成填写,过期视为弃奖哦~如有任何疑问可以和小助手联系~https://devcloud.huaweicloud.com/expert/open-assessment/qtn?id=3d3d196636fc4df9874cd247e36418bd&utm_source=ASPNetCore征集时间2021.06.15 - 2021.06.27读书笔记要求1. 每篇读书笔记字数要求≥300字;2. 内容要求与每日领读视频、领读书籍或是其他.NET Core技术领域相关;3. 内容原创不可抄袭;4. 回帖时请务必留下你的微信昵称和华为云账号。03. 注意事项1. 读书笔记提交后,小助手会在3个工作日内按续完成审核,并增加活动积分100活动积分/篇;2. 本次活动通过提交读书笔记,可获得的积分上限为500分;3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:读书笔记>自测题>专家Q&A>其他;5. 其他积分获取方式请查看活动社群公告;6. 其他未说明事项请参照 云享读书会《深入浅出ASP.NET Core》04. 最佳读书笔记奖励针对活动时间内提交的有效读书笔记,领读专家将根据内容质量和完成篇数综合评选3位最佳读书笔记获奖者,并奖励提交人荣耀猎人路由器1个05. 活动排行奖励最终积分排名1~5名     最终积分排名6~15名06. 关于云享读书会每期云享读书会活动,会选取一本技术相关的畅销书籍,由原作者/行业专家提炼书籍精华,在读书会的专属微信社群中,每日输出精华知识的领读视频,帮助大家快速积累专业知识。活动期间会设置每日自测题、结业实践任务、提交读书笔记三种积分获取任务,并根据活动结束后的积分排行发放活动奖励。07. 加入学习社群然后添加小助手微信,备注“NET Core”加入学习社群。
  • asp.net发布网站的步骤
    1、用VS2013打开解决方案。  2、选中解决方案,点击鼠标“右键”—>从弹出对话框中,选择“清理解决方案”。3、待第2步“清理解决方案”结束后,选中“解决方案”—>点击鼠标“右键”—>在弹出对话框中,选择“重新生成解决方案”。4、待第3步“重新生成解决方案”结束后,选择web运用程序,如下图中“testDemo”—>点击鼠标“右键”—>在弹出对话框中,选择“发布”。5、设置“配置文件”节点,点击“下一步”。6、设置“连接”节点,点击“下一步”。7、设置“设置”节点,点击“下一步”。8、设置“预览”节点,点击“发布”。9、发布后的文件如下图,此时文件发布成功,发布成功后,点开文件夹,所有页面的.cs文件都放进bin里面了。二、IIS安装1、打开“控制面板”—>选择“程序”。2、在弹出对话框中选择“启用或关闭Windows功能”。3、在弹出对话框中,选择“Internet Information Services”(如果初学者,建议全部选择,对于老手,按需选择),点击“确定”。4、点击确定后,系统正在运用所做的更改。5、运用程序更改结束后,选择“立即重新启动”。系统重新启动后,则IIS配置结束。6、重启电脑后,测试IIS配置是否成功。在浏览器栏,输入“http://localhost”,若出现如下界面,则表示IIS安装成功。三、IIS发布网站1、在“我是Cortana,小娜,有问题尽量问我”输入框输入“Internet Information Services”.2、打开IIS主界面。3、选择“网站”—>点击鼠标“右键”,在弹出对话框中,选择“添加网站”。4、在弹出对话框中,设置相关参数。5、此时,IIS主界面,“网站”多了一个站点“www.testWebSite”,即是刚才给站点取得名字。 6、配置运用程序池7、配置默认文档 8、默认文档添加成功后,如下图所示:9、为了防止权限不足,将刚才发布的文件添加成员“everyone”,并赋予权限。右键—>属性—>安全—>编辑—>添加     —>输入“everyone”—>为用户everyone赋权限—>确定。10、注册IIS。在所用程序中找到大写V,选择“Visual Studio 2013”—>选择“Visual Studio Tools”—>以管理员身份选择“VS2013 开发人员命令提示”,进入CMD。输入"aspnet_regiis -i"。11、至此,整个发布结束。12、测试。在浏览器地址栏输入:”http://localhost:8090/sessionDemo.aspx“,访问。
  • [技术干货] 【趁热打“帖”】Asp.net core实现北向应用服务对接OceanConnect
        华为IoT教程和帮助文档给出的Demo唯独缺少.net的样例,在上次刚刚实现了Asp.net core作为服务对接。使用的Api接口:login/subscriptions/deviceCommands主动调用的接口deviceDataChanged/commandChanged提供给回调的服务调用OceanConnect接口特点header信息app_key为header必须的除了login其他接口的header必须带token请求ContentType分为2种application/x-www-form-urlencoded和application/json 请求必须携带认证证书(证书见附件,密码IoM@1234)基于以上可以总结出通用请求方法/// <summary> /// IoT Post请求 /// </summary> /// <param name="url">完整url</param> /// <param name="content">HttpContent或其子类</param> /// <param name="token">有效token</param> /// <returns></returns> public async Task<string> Post2(string url, HttpContent content, string token) { var handler = new HttpClientHandler { CheckCertificateRevocationList = false, ClientCertificateOptions = ClientCertificateOption.Manual, SslProtocols = SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12 }; content.Headers.Add("app_key", AppId); if (content is FormUrlEncodedContent) content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); else if (content is StringContent) content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); handler.ClientCertificates.Add(new X509Certificate2(CertificateFilePath, CertificatePassword)); handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; using (var client = new HttpClient(handler)) { if (!string.IsNullOrEmpty(token)) { var authValue = new AuthenticationHeaderValue("Bearer", token); client.DefaultRequestHeaders.Authorization = authValue; } HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } }登陆方法public LoginResult Login() { var url = "https://ip:port/iocm/app/sec/v1.1.0/login"; var dic = new Dictionary<string, string> { { "appId", AppId }, { "secret", Secret } }; var body = new FormUrlEncodedContent(dic); try { var result = helper.Post2(url, body, null).GetAwaiter().GetResult(); var login = JsonConvert.DeserializeObject<LoginResult>(result); Token = login.AccessToken; return login; } catch (Exception ex) { _log.LogError(ex, "Login 异常:"); return null; } }订阅deviceDataChanged消息public string Subscript() { CheckToken(); var url = "https://ip:port/iocm/app/sub/v1.2.0/subscriptions?ownerFlag=true"; var param = new Dictionary<string, string> { { "appId", AppId }, { "notifyType", "deviceDataChanged" }, { "callbackUrl", "http://ip:port/api/clock/DeviceDataChanged" }, { "channel", "http" } }; var body = JsonConvert.SerializeObject(param); try { var html = helper.Post2(url, new StringContent(body), Token).GetAwaiter().GetResult(); var result = JsonConvert.DeserializeObject<IoTSubscriptResult>(html); return html; } catch (Exception ex) { _log.LogError(ex, "Subscript 异常"); return ex.Message; } }一个通用的设备命令方法private bool SendDeviceCommands(IoTCmdReq param) { CheckToken(); var url = $"https://ip:port/iocm/app/cmd/v1.4.0/deviceCommands?appId={AppId}"; var body = JsonConvert.SerializeObject(param, new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() }); try { var html = helper.Post2(url, new StringContent(body), Token).GetAwaiter().GetResult(); var result = JsonConvert.DeserializeObject<IoTCmdResult>(html); var success = new List<IoTCmdStatus> { IoTCmdStatus.DELIVERED, IoTCmdStatus.PENDING, IoTCmdStatus.SENT, IoTCmdStatus.SUCCESSFUL }; return success.Contains(result.Status); } catch (Exception ex) { _log.LogError(ex, "SendDeviceCommands 异常"); return false; } }一个设备命令样例private bool SetCall(string content, string deviceId) { var param = new IoTCmdReq { DeviceId = deviceId, Command = new IoTCmd { ServiceId = "Call", Method = "Set_Call", Paras = new Dictionary<string, object> { { "content", content } } }, CallbackUrl = "http://ip:port/api/clock/CommandChanged", ExpireTime = 10, MaxRetransmit = 2 }; return SendDeviceCommands(param); }接收回调设备数据变化命令/// <summary> /// 订阅数据变化回调入口 /// </summary> [HttpPost] [Route("[action]")] public void DeviceDataChanged() { string inputbody; using (var reader = new System.IO.StreamReader(HttpContext.Request.Body, Encoding.UTF8)) { inputbody = reader.ReadToEnd(); } var reqdata = JsonConvert.DeserializeObject<IoTDataChangedReq>(inputbody); if (reqdata.Service.ServiceId == "Clock") { _service.Welcome(reqdata.Service.Data["card_no"].ToString(), reqdata.DeviceId); } else if (reqdata.Service.ServiceId == "Sensor") { } }