Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Azure:Web应用程序-列出已部署nodejs应用程序的应用程序设置_Javascript_Node.js_Azure_Azure Web App Service_Azure Identity - Fatal编程技术网

Javascript Azure:Web应用程序-列出已部署nodejs应用程序的应用程序设置

Javascript Azure:Web应用程序-列出已部署nodejs应用程序的应用程序设置,javascript,node.js,azure,azure-web-app-service,azure-identity,Javascript,Node.js,Azure,Azure Web App Service,Azure Identity,我已将nodeJs应用程序部署到Linux Azure AppService。现在,我想更改同一应用程序服务的服务器设置。在标识选项卡下,我启用了此AppService的托管标识。在我的NodeJs应用程序中,我尝试了以下方法: const { DefaultAzureCredential } = require("@azure/identity"); const credential = new DefaultAzureCredential(); credential.

我已将nodeJs应用程序部署到Linux Azure AppService。现在,我想更改同一应用程序服务的服务器设置。在
标识
选项卡下,我启用了此AppService的托管标识。在我的NodeJs应用程序中,我尝试了以下方法:

const { DefaultAzureCredential } = require("@azure/identity");

const credential = new DefaultAzureCredential();

credential.getToken().then(token => {
  ...
});

我不确定这是在做什么,但我认为它没有联系,因为
getToken
永远不会解析。有什么建议是我这里缺少的吗?

如果您想在应用程序服务中获取服务器设置值,您可以尝试
process.env.NODE\u env
,如图所示。而不是调用Azure管理API


如果您希望在应用程序服务之外获取服务器设置值,那么您的代码无法直接访问服务器设置值,因此您应该调用Azure管理API。如果您对
DefaultAzureCredential
有问题,可以尝试
ClientSecretCredential
。请尝试下面的代码:

const { ClientSecretCredential } = require("@azure/identity");

const fetch = require("node-fetch")

let  tenantId='';
let  clientID = '';
let clientSecret = '';

let subscriptionID = ''
let resourceGroup = ''
let appServiceName = ''

new ClientSecretCredential(tenantId,clientID,clientSecret).getToken(['https://management.azure.com/.default']).then(result=>{
    accessToken = result.token
    reqURL = `https://management.azure.com/subscriptions/${subscriptionID}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/sites/${appServiceName}/config/appsettings/list?api-version=2019-08-01`
    fetch(reqURL, {
        method: 'post',
        headers: { 'Authorization': 'Bearer ' +  accessToken},
    })
    .then(res => res.json())
    .then(json => console.log(json));

})
结果:


有关如何创建Azure广告应用程序并为其分配角色,以便其能够拥有调用Azure管理API的权限,请参阅。

我的目标是读取和写入设置。所以,我同意,阅读时可以使用环境变量。但是如何更改它们呢?所有的广告应用程序都是必需的吗?@JeanlucaScaljeri,是的,我认为如果您需要编写/修改环境变量,您应该调用Azure管理API。好的。但是在哪里可以找到您在示例中使用的clientID和clientSecret?@JeanlucaScaljeri,您需要注册Azure广告应用程序:这样您就可以获得clientID并创建一个秘密:对于Azure管理API,是的,请参见以下内容: