Visual studio 2017 为什么在Visual Studio的Logic App Designer中选择现有连接时,会在我的JSON文件中添加新连接?
我找不到任何关于这种行为的文章 我正在使用Visual Studio 2017和Logic App Designer。我有一个配置,在部署时使用参数文件可以完美地工作。当我在设计器中打开JSON时,它会显示“无效连接”,我可以选择现有连接或新连接。如果我选择现有的一个,该操作将再次启用并在studio中工作 但另一方面,在JSON文件中,创建了一个新的连接,它与前面的连接完全相同,但它被称为(在本例中)sftp_2—操作正在使用它。我试图更改对旧连接的所有引用,但它不起作用——它给了我同样的错误 它在我周五下班时起作用,但在我今天重新打开VisualStudio后就不起作用了。我是否需要先激活/重新打开旧连接 连接如下所示:Visual studio 2017 为什么在Visual Studio的Logic App Designer中选择现有连接时,会在我的JSON文件中添加新连接?,visual-studio-2017,azure-logic-apps,Visual Studio 2017,Azure Logic Apps,我找不到任何关于这种行为的文章 我正在使用Visual Studio 2017和Logic App Designer。我有一个配置,在部署时使用参数文件可以完美地工作。当我在设计器中打开JSON时,它会显示“无效连接”,我可以选择现有连接或新连接。如果我选择现有的一个,该操作将再次启用并在studio中工作 但另一方面,在JSON文件中,创建了一个新的连接,它与前面的连接完全相同,但它被称为(在本例中)sftp_2—操作正在使用它。我试图更改对旧连接的所有引用,但它不起作用——它给了我同样的错误
{
"type": "MICROSOFT.WEB/CONNECTIONS",
"apiVersion": "2016-06-01",
"name": "[parameters('sftp_1_Connection_Name')]",
"location": "[parameters('logicAppLocation')]",
"properties": {
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'sftp')]"
},
"displayName": "[parameters('sftp_1_Connection_DisplayName')]",
"parameterValues": {
"hostName": "[parameters('sftp_1_hostName')]",
"userName": "[parameters('sftp_1_userName')]",
"password": "[parameters('sftp_1_password')]",
"sshPrivateKey": "[parameters('sftp_1_sshPrivateKey')]",
"sshPrivateKeyPassphrase": "[parameters('sftp_1_sshPrivateKeyPassphrase')]",
"portNumber": "[parameters('sftp_1_portNumber')]",
"giveUpSecurityAndAcceptAnySshHostKey": "[parameters('sftp_1_giveUpSecurityAndAcceptAnySshHostKey')]",
"sshHostKeyFingerprint": "[parameters('sftp_1_sshHostKeyFingerprint')]",
"disableUploadFilesResumeCapability": "[parameters('sftp_1_disableUploadFilesResumeCapability')]"
}
}
},
以下是其中一项行动:
"Get_file_content": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['sftp_1']['connectionId']"
}
},
"method": "get",
"path": "/datasets/default/files/@{encodeURIComponent(encodeURIComponent(parameters('sftp_1_filepath'),items('For_each')?['Name']))}/content",
"queries": {
"inferContentType": true
}
},
"runAfter": {}
}
最后是连接阵列:
"$connections": {
"value": {
"sftp_1": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'sftp')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('sftp_1_Connection_Name'))]",
"connectionName": "[parameters('sftp_1_Connection_Name')]"
},
"filesystem": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'filesystem')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('filesystem_1_Connection_Name'))]",
"connectionName": "[parameters('filesystem_1_Connection_Name')]"
}
}
}
这是应用程序流程的逻辑
这背后的原因是Visual Studio Logic Apps Designer没有检查此连接器使用的连接是否在Logic app的其他位置或Azure中使用。因此,在这种情况下,现在旧的API连接仍然在Azure中的某个地方使用,它会创建一个额外的API连接(本例中为sftp_2) 设计器帮助您发现“动态内容”。然而,要做到这一点,它需要在开发阶段而不是部署阶段创建API连接 作为覆盖,Visual studio Designer中的此连接意味着在保存时,它将在Azure中被覆盖。因为在Visual Studio中工作时,您已经在使用Azure中部署的对象,例如连接 如果发生这种情况,我通常使用Ctrl+H组合键,将新连接替换为旧连接的名称,并删除对旧连接的任何引用—这是一项繁琐的工作 至于我的问题,它变成了鸡蛋和鸡的问题。您正试图设置命名约定,但如果由设计器进行设置,则在可以设置命名约定之前会创建API连接。如果您在JSON中工作,这可以通过参数实现,但是设计器看起来像是坏了一样。无法生成该参数,因此它仅修改连接名称 这里的连接器名为
blob-3221
,但我必须使用名为CustomVariableName
和CustomName
的参数。我已经在代码中突出显示了自定义的位置。所以这里说azureblob_1_连接的名称是blob-3221
,显示名称是blob test
其中有两个已声明但未使用的值:
在部署时,它将获得以下值:
将删除诸如blob-3221
之类的占位符值,并插入自定义前缀名称。
不带前缀的名称的参数文件。
您的意思是您选择了现有连接“sftp_1”,但创建了“sftp_2”?我在你的json文件中没有看到“sftp_2”。这正是我的意思。我注意到我上传了一个文件共享连接字符串,但这是正确的。sftp_1_-connection工作正常,但只要我选择它作为操作,就会创建一个sftp_2_-connection。因此我想知道是什么导致了这种行为。损坏的JSON文件?它肯定会验证,但可能是其他错误触发了这个问题?你的逻辑应用程序看起来像什么?你可以分享图片。您的意思是选择sftp_1连接,然后添加操作,然后创建sftp_2或sftp_1更改为sftp_2?并检查您的资源组,是否在那里创建了sftp_2?如果它和sftp_1一样?@GeorgeChen,是的,这真的很奇怪。我一直使用相同的凭证。目前我的解决方法是直接在Json中工作,而不是使用Logic App Designer。当我完成后,我将它部署到Azure,瞧,一切都很完美。我猜这背后一定有一些奇怪的配置,导致Logic App Designer崩溃:)