Sum*_*arg 5 azure azure-functions
我正在尝试运行Azure HTTP触发器Azure函数,并且收到了401 Unauthorized。之前对我来说还不错。
当我在同一功能应用程序下创建新功能并复制相同的代码时,它也可以正常运行,但是当我尝试运行自己创建的功能时,却遇到了我提到的相同错误。
我在流式传输服务中看到以下日志。
2018-07-02T07:09:41欢迎,您现在已连接到日志流服务。
2018-07-02T07:09:48.893 [Info]执行HTTP请求:{“ requestId”:“ 53e54698-c46b-4cb6-9ed0-d042eaf9ec71”,“ method”:“ POST”,“ uri”:“ / api / Source / MPAA / false“}
2018-07-02T07:09:48.893 [Info]执行的HTTP请求:{“ requestId”:“ 53e54698-c46b-4cb6-9ed0-d042eaf9ec71”,“ method”:“ POST”,“ uri”:“ / api / Source / MPAA / false”,“ authorizationLevel”:“匿名”,“ status”:“未经授权”}
Mr.*_*r.K 19
这就是我根据上面 Nick 正确提供的原因解决问题的方法。如果不想在每次推送代码时都打开 Azure 函数的 GUI,请执行此操作。
在函数的源代码中:
[FunctionName("YourFunctionName")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log){
Run Code Online (Sandbox Code Playgroud)
我必须做的是将默认设置更改AuthorizationLevel.Function为AuthorizationLevel.Anonymous. 前者只允许从其他函数应用触发,后者允许你从浏览器触发。
小智 12
它与函数的授权级别有关。如果您在 function.json 文件中使用authlevel = anonymous 。然后,您无需传递任何访问密钥,就可以像普通 api 端点一样访问 azure function api。
{
"disabled": false,
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
Run Code Online (Sandbox Code Playgroud)
}
例如,您的 http 触发器是http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>您可以轻松访问它,无需任何访问/身份验证密钥。
如果您使用authlevel =函数,那么您必须在点击它时将访问密钥/Api 密钥与 http 触发端点一起传递。如果不这样做,您将收到401 未经授权。
{
"disabled": false,
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
Run Code Online (Sandbox Code Playgroud)
}
您需要像下面的示例一样传递密钥。**https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?code=<API_KEY> **
对于authlevel =函数,您可以通过功能键和主机键访问http触发器。在 Azure 门户中打开函数时,您将找到“获取函数 Url”部分。
注意 使用主机密钥,您可以访问所有 http 触发器端点,它对于所有 http 触发器来说都是通用的。但每个功能的功能键都是唯一的。
第三个选项是使用authlevel = admin。
{
"disabled": false,
"bindings": [
{
"authLevel": "admin",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
Run Code Online (Sandbox Code Playgroud)
}
对于身份验证级别管理员,http 触发器只能通过主密钥访问。**https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?code=<MASTER_KEY> **
您将在“获取函数 Url”部分中根据身份验证级别找到所有这些键。授权级别的完整指南位于此链接中。 Azure Functions HTTP 触发函数 authlevel 说明
我希望这会有所帮助。
Nic*_*ick 11
如果您通过 azure 门户管理您的代码,那么只需导航到“集成”并将“授权级别”下拉列表更改为“匿名”。

如果您使用源代码控制集成(例如通过 git)管理您的代码,请将其添加到您的function.json:
"authLevel": "anonymous"
Run Code Online (Sandbox Code Playgroud)
完整片段function.json:
{
"bindings": [
{
"name": "req",
"type": "httpTrigger",
"direction": "in",
"methods": [ "post" ],
"route": "Source/MPAA",
"authLevel": "anonymous"
},
{
"type": "http",
"name": "res",
"direction": "out"
}
],
"disabled": false
}
Run Code Online (Sandbox Code Playgroud)
注意:以上只是一个例子,您可能需要调整路线。注意:/api 是默认前缀,可以在host.json文件中修改。
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |