无法从 Azure API 管理中的上下文中获取用户电子邮件
cannot get the User Email from context in Azure API Management
我有一个从上下文中提取用户电子邮件的入站策略,如下所示:
<inbound>
<base />
<set-backend-service id="apim-generated-policy" backend-id="azure-func-staging" />
<set-header name="customer-email" exists-action="override">
<value>@(context.User.Email)</value>
</set-header>
</inbound>
但无论如何我总是收到以下消息:
set-header (0.788 ms)
{
"messages": [
{
"message": "Expression evaluation failed.",
"expression": "context.User.Email",
"details": "Object reference not set to an instance of an object."
},
"Expression evaluation failed. Object reference not set to an instance of an object.",
"Object reference not set to an instance of an object."
]
}
你能帮我理解我做错了什么吗?
当您将开发者的用户设置为请求的 hheader 时,您需要将以下内容添加到 APIM 政策:
这里你漏掉了政策代码中的return声明:
<set-header name="customer-email" exists-action="override">
<value>@(context.User.Email)</value>
</set-header>
像下面那样修改上面的代码并尝试:
<set-header name="user" exists-action="override">
<value>@{var usr = context.User;
return usr.Email;}</value>
</set-header>
有关 context.user
示例的更多详细信息,请参阅 this
我有一个从上下文中提取用户电子邮件的入站策略,如下所示:
<inbound>
<base />
<set-backend-service id="apim-generated-policy" backend-id="azure-func-staging" />
<set-header name="customer-email" exists-action="override">
<value>@(context.User.Email)</value>
</set-header>
</inbound>
但无论如何我总是收到以下消息:
set-header (0.788 ms)
{
"messages": [
{
"message": "Expression evaluation failed.",
"expression": "context.User.Email",
"details": "Object reference not set to an instance of an object."
},
"Expression evaluation failed. Object reference not set to an instance of an object.",
"Object reference not set to an instance of an object."
]
}
你能帮我理解我做错了什么吗?
当您将开发者的用户设置为请求的 hheader 时,您需要将以下内容添加到 APIM 政策:
这里你漏掉了政策代码中的return声明:
<set-header name="customer-email" exists-action="override">
<value>@(context.User.Email)</value>
</set-header>
像下面那样修改上面的代码并尝试:
<set-header name="user" exists-action="override">
<value>@{var usr = context.User;
return usr.Email;}</value>
</set-header>
有关 context.user
示例的更多详细信息,请参阅 this