通过 Azure API 管理的 C# 表达式的 ToString() 错误

ToString() error with C# expression via Azure API Management

我在尝试将类型转换为字符串时遇到以下错误,如下所示:

  <set-variable name="a" value="@(context.Variables["a"].ToString())" />
Error in element 'set-variable' on line 16, column 10: Usage of member 'ToString' of type 'System.Object' is not supported within expressions


 <set-variable name="a" value="@(context.Variables["a"])" />
    Error in element 'set-variable' on line 16, column 10: Expression return type 'System.Object' is not allowed

https://docs.microsoft.com/en-us/azure/api-management/api-management-policy-expressions

.ToString() 将不起作用。

改用这个表达式:

@(context.Variables.GetValueOrDefault<string>("a"))

或者如果您想要清空默认字符串以防变量不存在或为空:

@(context.Variables.GetValueOrDefault<string>("a",""))

您可以尝试如下投射:

@((string)context.Variables["a"]))