更新时间:2025-07-18 GMT+08:00
分享

C#函数开发概述

FunctionGraph目前支持以下C#运行环境。

  • C#(.NET Core 2.1)
  • C#(.NET Core 3.1)
  • C#(.NET Core 6.0)
  • C#(.NET Core 8.0)(仅支持“中东-利雅得”“土耳其-伊斯坦布尔”区域)

C#函数接口定义

C#函数接口定义:作用域 返回参数 函数名(函数参数,Context参数)

  • 作用域:提供给FunctionGraph调用的用户函数必须定义为public。
  • 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。
  • 函数名:用户自定义函数名称,需要和函数执行入口处用户自定义的入口函数名称一致。
  • 上下文环境(context):Runtime提供的函数执行上下文,相关属性定义在对象说明中。

    HC.Serverless.Function.Common –部署在FunctionGraph服务中的项目工程需要引入该库,其中包含IFunctionContext对象,详情见context类说明。

    创建csharp函数时,需要定义某个类中的方法作为函数执行入口,该方法可以通过定义IFunctionContext类型的参数来访问当前执行函数的信息。例如:

    1
    2
    3
    4
    public Stream handlerName(Stream input,IFunctionContext context)
    {
           // TODO
    }
    

C#函数的函数执行入口参数格式为:[程序集名]::[命名空间].[类名]::[执行函数名],例如CsharpDemo::CsharpDemo.Program::MyFunc,可通过FunctionGraph控制台进入函数详情页的常规设置中进行配置或修改。

函数Handler定义

ASSEMBLY::NAMESPACE.CLASSNAME::METHODNAME

  • .ASSEMBLY为应用程序的.NET程序集文件的名称,假设文件夹名称为HelloCsharp。
  • NAMESPACE、CLASSNAME即入口执行函数所在的namespace和class名称。
  • METHODNAME即入口执行函数名称。例如:

    创建函数时Handler:HelloCsharp::Example.Hello::Handler。

SDK接口

  • Context接口

    Context类中提供了许多属性供用户使用,如表1所示。

    表1 Context对象说明

    属性名

    属性说明

    String RequestId

    请求ID。

    String ProjectId

    Project Id。

    String PackageName

    函数所在分组名称。

    String FunctionName

    函数名称。

    String FunctionVersion

    函数版本。

    Int MemoryLimitInMb

    分配的内存。

    Int CpuNumber

    获取函数占用的CPU资源。

    String Accesskey

    获取用户委托的AccessKey(有效期24小时),使用该方法需要为函数配置委托。

    当前函数工作流已停止维护Runtime SDK 中String AccessKey接口,您将无法使用String AccessKey获取临时AK。

    String Secretkey

    获取用户委托的SecretKey(有效期24小时),使用该方法需要为函数配置委托。

    当前函数工作流已停止维护Runtime SDK 中String SecretKey接口,您将无法使用String SecretKey获取临时SK。

    String SecurityAccessKey

    获取用户委托的SecurityAccessKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

    String SecuritySecretKey

    获取用户委托的SecuritySecretKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

    String SecurityToken

    获取用户委托的SecurityToken(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

    String Token

    获取用户委托的Token(有效期24小时),使用该方法需要为函数配置委托。

    Int RemainingTimeInMilliSeconds

    函数剩余运行时间。

    String GetUserData(string key,string defvalue=" ")

    通过key获取用户通过环境变量传入的值。

  • 日志接口

    FunctionGraph中C# SDK中接口日志说明如所示。

    表2 日志接口说明

    方法名

    方法说明

    Log(string message)

    利用context创建logger对象:

    var logger = context.Logger;

    logger.Log("hello CSharp runtime test(v1.0.2)");

    Logf(string format, args ...interface{})

    利用context创建logger对象:

    var logger = context.Logger;

    var version = "v1.0.2"

    logger.Logf("hello CSharp runtime test({0})", version);

相关文档