构建 Script 类
在本单元中,您将探索如何构建 C# Script 类以实现转换逻辑。
与连接器一起使用的自定义代码必须满足以下要求:
类名称必须是 Script。
Script 类必须实现 ScriptBase。
Script 类必须实现名为 ExecuteAsync 的方法。
自定义代码的运行时间必须少于五秒。
自定义代码的总大小必须小于 1 MB。
仅支持一个脚本文件或类。
了解 ScriptBase
ScriptBase 是自定义连接器基础结构提供的类,具有支持的帮助程序方法和接口。 Script 类需要使用此抽象类作为其基类。
public class Script : ScriptBase
{
public override Task<HttpResponseMessage> ExecuteAsync()
{
// Your code here
}
}
除了 ExecuteAsync 方法外,此类还具有 CreateJsonContent 帮助程序方法,可用于从序列化 JSON 创建 StringContent 对象。 例如,在以下代码中,CreateJsonContent 帮助程序方法可填充已生成的已转换回复中的 response.Content。
// Wrap the original JSON object into a new JSON object with just one key ('wrapped')
var newResult = new JObject
{
["wrapped"] = result,
};
response.Content = CreateJsonContent(newResult.ToString());
ScriptBase 类还提供 CancellationToken 属性。 如果您使用 SendAsync 进行调用,则将使用 CancellationToken 属性。 如果请求时间过长或已请求取消,该方法会向传递给它的 CancellationToken 发出信号。
ScriptBase 类还有一个 Context 公共属性,您的逻辑可以使用它来为正在处理的请求提供上下文。 Context 属性的类型为 IScriptContext,并具有以下有用的属性和方法:
OperationId - 当您需要识别当前正在处理哪个操作以便您的逻辑可以提供正确的转换时,此属性最有用。
Request - 此方法是正在处理的操作的 HttpRequestMessage。 如果需要转换请求,请修改此方法,然后将其传递给 SendAsync 以将请求发送到服务。
Logger - 此方法为您提供一个 ILogger 实例,您可以使用它来将代码中的诊断信息记录到代码日志中以进行连接器操作。
SendAsync - 此属性可用于向服务发送 HTTP 请求。 您应该使用此方法,而不是进行自己的 HttpClient.SendAsync 调用。
在本地编译您的代码
在本地编译代码可以帮助您更轻松地识别编译问题。 要在本地编译代码,您需要在本地计算机上创建一个项目,然后为 ScriptBase 类和 IScriptContext 接口创建文件。 可从支持类和接口的定义文档中复制这些文件的代码。
GitHub 上的 Microsoft/MTC_CustomConnectorCodeProject 开源项目也有助于进行本地开发。 该项目为自定义代码开发预设置了控制台项目。
支持的命名空间
您可实现的自定义代码仅限于一组受支持的命名空间。 这些命名空间主要是常见 System.* 命名空间的集合,包括日志记录和 Newtonsoft JSON,可帮助支持自定义代码中的逻辑。 有关当前支持的命名空间的完整列表,请访问支持的命名空间。
此外,您的自定义代码可能不会引用任何其他 .NET 程序集,因此它只能用于您在上传的脚本中放入的逻辑。
其他自定义代码示例
要详细了解可以使用自定义代码完成的不同类型的转换,可以浏览已发布的 Microsoft Power Platform 连接器的示例。 通过在 PowerPlatformConnectors 公共存储库上搜索 ScriptBase,可以查看当前实现自定义代码的连接器。