Azure区块链工作台REST API返回204无内容



我创建并分发了一个区块链工作台项目。我可以访问Azure Blockchain Workbench客户端网站,在那里我可以创建合同、采取行动等。

我尝试开发一个简单的程序,使用Azure Blockchain Workbench REST API与我自己的应用程序进行区块链交互。

在调用任何API函数之前,我会得到身份验证令牌(我希望它是正确的,因为我得到了令牌的值)

如果现在我尝试调用API函数"https://myblockchain-xyz-api.azurewebsites.net/api/v2/users",然后我得到了用户列表。

然而,如果现在我尝试调用任何其他关于区块链应用程序的函数,例如"/api/v2/应用程序",我会得到返回代码204"无内容"。

例如,如果我尝试调用"/api/v2/应用程序/2/工作流",那么我会得到404"未找到">

API调用之后:

Dim MyOauthToken As String = 
Utilities.BlockchainAuthentication.GetAuthenticationToken().Result
Dim MyHttpClient As New HttpClient()
MyHttpClient.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", MyOauthToken)
'--------------------------------------------------------
'Force security protocol
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
'---------------------------------------------------------
'Get list of applications
Dim MyServiceUriString As String = "https://myblockchain-xyz-api.azurewebsites.net/api/v2/users/applications"
Dim MyResponse As Task(Of HttpResponseMessage) = MyHttpClient.GetAsync(MyServiceUriString)
MyResponse.Wait()

"应用程序"功能的结果是204"无内容"如果我做同样的调用"…/api/v2/用户",它会起作用,我会得到所有用户。

有人能帮忙吗?

我试着打电话给"../users/me"看看会发生什么,我得到了以下结果(我不知道这是否有帮助):

{"currentUser":{"userID":7,"externalID":"1r67sf88-5b49-47da-a27a-79g3gg345","firstName":null,"lastName":","emailAddress":null,"capabilities":{"canUploadApplication":false,"canUpload ContractCode":false、"canModifyRoleAssignments":false和"canProvisionUser":false以及"canUpgradeWorkbench":false}}

问题是链外数据库中的默认用户(通过部署Azure Blockchain Workbench创建)没有映射到任何应用程序。正如解决方法一样,您可以始终在DB中手动添加此映射,之后您将能够获得应用程序(并使用合同等)。

你需要做什么:

  1. 为应用程序(web api)查找外部用户id,该应用程序是使用Azure Blockchain Workbench进行配置的。

    • 导航到Azure Azcive目录
    • 企业应用程序
    • 在下拉菜单中选择所有aps,然后按apply
    • 现在您可以看到类似Azure Blockchain Workbench blockchaintest-XXXXX的内容
    • 选择一个项目,您将在浏览器地址栏中获得external_id(行中的最后一个guid)
  2. 查找您创建的AZ BCW的资源组并查找SQL数据库

  3. 用于附加到数据库的用户查询编辑器(预览)
  4. 在dbo中查找用户ID。步骤1中具有external_id的用户
  5. 在dbo中查找应用程序ID。应用程序
  6. 将新记录添加到dbo。具有步骤4中的用户id和步骤5中的应用程序id的RoleAssignment

现在这应该工作

curl -H "Authorization: Bearer ${TOKEN}" -X GET 'https://blockchaintest-XXXXX-api.azurewebsites.net/api/v1/applications?isLatestVetsion=true' 
{"nextLink":"/api/v1/applications?skip=1","applications":[{"id":10,"version":"9.0","name":"CCCCC","description":"CCCCCCC","displayName":"CCCCCCCC","createdByUserId":2,"createdDtTm":"2019-04-30T05:13:40.87","enabled":true,"blobStorageURL":null,"isLatestVersion":null,"applicationRoles":null}]}

最新更新