C# 错误(RequestDisallowedByPolicy):策略不允许资源XXX(…需要资源上的标记…)
我正在azure中发布一个函数。从向导创建“函数应用程序”时,我出现以下错误:“…需要资源上的标记…” 错误: 我怀疑我应该添加一些创建“功能应用程序”所需的“标签”。如果我是正确的,我如何从我的c代码中配置它 这里我附上我的函数代码。如何分配值分配的策略从我的c#代码中请求我的标记的名称C# 错误(RequestDisallowedByPolicy):策略不允许资源XXX(…需要资源上的标记…),c#,azure,azure-functions,C#,Azure,Azure Functions,我正在azure中发布一个函数。从向导创建“函数应用程序”时,我出现以下错误:“…需要资源上的标记…” 错误: 我怀疑我应该添加一些创建“功能应用程序”所需的“标签”。如果我是正确的,我如何从我的c代码中配置它 这里我附上我的函数代码。如何分配值分配的策略从我的c#代码中请求我的标记的名称 公共静态类函数1 { [功能名称(“功能1”)] 公共静态异步任务运行( [HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null
公共静态类函数1
{
[功能名称(“功能1”)]
公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]HttpRequest请求,
ILogger日志)
{
LogInformation(“C#HTTP触发器函数处理了一个请求。”);
字符串名称=请求查询[“名称”];
string requestBody=等待新的StreamReader(req.Body).ReadToEndAsync();
动态数据=JsonConvert.DeserializeObject(requestBody);
名称=名称??数据?.name;
string responseMessage=string.IsNullOrEmpty(名称)
?“此HTTP触发的函数已成功执行。请在查询字符串或请求正文中为个性化响应传递名称。”
:$“您好,{name}。此HTTP触发的函数已成功执行。”;
返回新的OkObjectResult(responseMessage);
}
}
看来问题出在工作组的政策上
在门户上搜索策略,导航到定义以检查订阅是否设置了此策略:,该策略强制存在标记。找出所需的标记名,例如“Region
”。
解决方案:
创建函数应用程序时添加标记。例如:“区域”:“centralus”
请添加您的代码如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换到填充),请查看您的答案对我有很大帮助。但是如何从c#中的代码中发送函数定义中的标记呢?不建议从函数代码中添加标记@如果你想自动添加标签,最好的选择也是使用策略。我的问题是在发布我的“函数”时。在这个过程中,必须创建“函数应用程序”,因为有一些策略要求我输入一些标签,所以它给了我错误。我通过从azure门户创建“功能应用程序”解决了这个问题,因为有一个标签可以输入标签。但是,我很想知道是否可以将这些相同的标记指定为函数中的属性或某个地方,以便从VisualStudio向导进行发布,而无需切换到“azure门户”。多丽丝,非常感谢你的回答,你的回答更清楚地说明了这一点。@Arinka我认为没有办法做到这一点。
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
string responseMessage = string.IsNullOrEmpty(name)
? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
: $"Hello, {name}. This HTTP triggered function executed successfully.";
return new OkObjectResult(responseMessage);
}
}