在阿里云函数计算上部署.NET Core 3.1

本文涉及的产品
函数计算FC,每月15万CU 3个月
.cn 域名,1个 12个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

在阿里云函数计算上部署.NET Core 3.1

使用阿里云ECS或者其他常见的VPS服务部署应用的时候,需要手动配置环境,并且监测ECS的行为,做补丁之类的,搞得有点复杂。好在很多云厂商(阿里云、Azure等)提供了Serverless服务,借助于Serverless,开发人员可以更加专注于代码的开发,减少运维的成本。

Azure的部署直接集成在了VS中,非常方便,本文主要介绍一下使用ASP.NET CORE 3.1部署在阿里云Serverless(函数计算)的内容。

准备#
阿里云的函数计算提供了很多运行库,对.NET的支持现在到ASP.NET CORE 2.1,如果我们需要自定义runtime,那么需要使用到函数计算的custom runtime功能。

首先准备好一个ASP.NET CORE 3.1程序,保证其可以正常运行(Release模式下能够正常工作)。然后做以下改动:

修改端口#
阿里云函数计算自定义runtime使用的是固定的监听端口9000,因此,需要修改Program.cs文件

Copy
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

WebHost.CreateDefaultBuilder(args)
//指定监听9000端口
       .UseUrls("http://*:9000")
       .UseStartup<Startup>();

设置发布选项#
VS右键点击工程,点发布,选择高级。

由于目标是linux系统,因此需要选择目标运行时为linux-64,部署模式选择独立。(阿里云暂时没有配置.NET Core 3.1 Runtime,需要自带运行组件,但是不要选择单一文件,实测有问题)。

发布完成之后,转到对应的publish目录,将应用程序名称相同的一个无拓展名的文件,重命名为bootstrap。

windows默认的情况下,这个文件就是可以执行的,如果是其他系统,需要确保这个文件有可执行权限。

部署#
这里需要借助阿里云函数计算的工具fun.exe,在正式部署之前,需要先运行fun.exe config进行配置。具体的使用方式可以参考阿里云的文档。

部署需要一个配置的文件,我的文件配置如下:

Copy
ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
MonitorService:

Type: 'Aliyun::Serverless::Service'
Properties:
  Description: 'rsystem'
RSystemApi:
  Type: 'Aliyun::Serverless::Function'
  Properties:
    Handler: index.handler
    Runtime: custom
    CodeUri: 'RSystemApi/RSystemApi/bin/Release/netcoreapp3.1/publish/'
  Events:
    httpTrigger:
      Type: HTTP
      Properties:
        AuthType: ANONYMOUS
        Methods:
          - GET
          - POST
          - PUT 
          - PATCH
          - DELETE 

使用powershell执行fun.exe deploy -t deploy.yml,一路下一步,等待提示完成,就可以在函数计算中心看到新部署的服务。

服务可以通过阿里云的控制台进行访问,但是不推荐,容易有各种各样的问题。建议大家使用自定义域名的方式进行访问,详情见文末参考资料。

注意:

尽量控制文件压缩后的大小在50M以内,否则部署不会成功,如果需要更大文件的部署,那么可以使用NAS服务。
fun config可以设置超时时间,文件比较大的情况,deploy超时时间段可能会造成部署失败。(我设置了120s)
以上步骤也适用于其他语言环境应用custom的情况。详情见https://help.aliyun.com/document_detail/132044.html
顺便吐槽一下阿里云,官方提供custom runtime示例里面有F#,里面是基于.NET CORE 3.1的,直接原生支持多好。
常见问题:#
对于.NET Core 3.1的调试,大多数情况本地能行,那么生产服务器也就可以,当然也有一些例外情况。

提示CAFileNotFound#
Copy
{

"ErrorCode": "CAFileNotFound",
"ErrorMessage": "The CA process cannot be started due to missing files:ContainerStartDuration:100000000. CA process cannot be started due to missing file: invalid header field value \"oci runtime error: container_linux.go:247: starting container process caused \\\"exec: \\\\\\\"/code/bootstrap\\\\\\\": stat /code/bootstrap: no such file or directory\\\"\\n\"Error response from daemon: invalid header field value \"oci runtime error: container_linux.go:247: starting container process caused \\\"exec: \\\\\\\"/code/bootstrap\\\\\\\": stat /code/bootstrap: no such file or directory\\\"\\n\""

}
检查一下是不是没有将主文件改名成bootstrap

提示CAExited#
检查一下代码是不能够在本地正常运行,有没有代码里面强行限制为localhost的情况。

提示404错误#
使用阿里云的控制台调用的时候,经常出现本地调用成功,远程调用报404的问题。需要注意,阿里云给的调试地址是:
https://xxxxxxxxxxxxxxxx.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/[ServiceName]/[FuctionName]/xxx的地址模式。这个大概率和我们提供的路由解析规则不符。因此,请尽量使用自定义域名。

自定义域名必须是已经备案的域名才可以,而且解析需要在阿里云才行。可是暂时不知道什么方法可以单独搞到备案的域名,比较通用的方式是申请域名,并且解析到ECS进行备案,等备案完成,再解析到函数计算服务。

参考资料:#
https://yq.aliyun.com/articles/731985

作者: 波多尔斯基

出处:https://www.cnblogs.com/podolski/p/12847037.html

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
19小时前
|
弹性计算 自然语言处理 搜索推荐
活动实践 | 基于函数计算部署GPT-Sovits模型实现语音生成
通过阿里云函数计算部署GPT-Sovits模型,可快速实现个性化声音的文本转语音服务。仅需少量声音样本,即可生成高度仿真的语音。用户无需关注服务器维护与环境配置,享受按量付费及弹性伸缩的优势,轻松部署并体验高质量的语音合成服务。
|
11天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
23天前
|
弹性计算 人工智能 自然语言处理
魔搭社区与函数计算:高效部署开源大模型的文本生成服务体验
在数字化时代,人工智能技术迅速发展,开源大模型成为重要成果。魔搭社区(ModelScope)作为开源大模型的聚集地,结合阿里云函数计算,提供了一种高效、便捷的部署方式。通过按需付费和弹性伸缩,开发者可以快速部署和使用大模型,享受云计算的便利。本文介绍了魔搭社区与函数计算的结合使用体验,包括环境准备、部署应用、体验使用和资源清理等步骤,并提出了改进建议。
|
27天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
29天前
|
Serverless 数据安全/隐私保护 前端开发
大模型代码能力体验报告之贪吃蛇小游戏《一》:Claude.ai篇 - 生成、预览和快速部署的serverless一条龙
本文介绍了通过Claude.ai生成并优化Web版贪吃蛇游戏的过程,展示了其强大的代码生成功能及用户友好的界面设计。从初始版本的快速生成到根据用户反馈调整游戏速度,再到提供多种实用工具如文件管理、版本控制和一键部署,Claude.ai不仅是一个代码助手,更像是一个全面的serverless开发平台。文中还呼吁国内厂商关注此类技术的发展。
|
1月前
|
人工智能 弹性计算 运维
触手可及:阿里云函数计算助力AI大模型的评测
阿里云推出的面向AI服务器的功能计算(Functional Computing, FC),专为AI应用提供弹性计算资源。该服务支持无服务器部署、自动资源管理和多语言支持,极大简化了AI应用的开发和维护。本文全面评测了FC for AI Server的功能特性、使用体验和成本效益,展示了其在高效部署、成本控制和安全性方面的优势,并通过具体应用案例和改进建议,展望了其未来发展方向。
133 4
|
1月前
|
人工智能 弹性计算 自然语言处理
《触手可及,函数计算玩转 AI 大模型》解决方案体验与部署评测
在AI技术快速发展的背景下,大模型正推动各行业的智能化转型。企业为抓住机遇,纷纷寻求部署AI大模型以满足特定业务需求。阿里云函数计算凭借按量付费、卓越弹性和快速交付等优势,为企业提供了高效、安全的AI大模型部署方案。本文将详细介绍阿里云函数计算的技术解决方案及其在文生文、图像生成和语音生成等领域的应用实例,展示其在降低成本、提高效率和增强灵活性方面的显著优势。
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
153 13
|
3月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 Serverless 网络安全
函数计算产品使用问题之通过仓库导入应用时无法配置域名外网访问,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

热门文章

最新文章

下一篇
无影云桌面