Azure Blockchain Workbench REST API返回204没有内容

时间:2019-01-20 17:48:12

标签: azure blockchain azure-blockchain-workbench

我已经创建并分发了一个区块链工作台项目。 我可以访问Azure Blockchain Workbench客户端网站,在其中可以创建合同,执行操作等。

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

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

如果现在我尝试调用API函数“ https://myblockchain-xyz-api.azurewebsites.net/api/v2/users”,那么将得到用户列表。

但是,如果现在我尝试调用有关区块链应用程序的任何其他函数,例如“ / api / v2 / applications”,则会得到返回代码204“无内容”。

如果我尝试调用“ / api / v2 / applications / 2 / workflows”,那么我会收到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”,则可以正常运行,并且可以获取所有用户。

有人可以帮忙吗?

我尝试调用“ ../users/me”以查看会发生什么,并且得到以下结果(我不知道这是否有帮助):

{“ currentUser”:{“ userID”:7,“ externalID”:“ 1r67sf88-5b49-47da-a27a-79g3gg345”,“ firstName”:null,“ lastName”:“”,“ emailAddress”:null, “ userChainMappings”:[{“ userChainMappingID”:5,“ userID”:7,“ connectionID”:1,“ chainIdentifier”:“ 0x32cfcf169813364563456348c99b9”,“ chainBalance”:null}]},“功能”:{“ canUploadApplication”: false,“ canUploadContractCode”:false,“ canModifyRoleAssignments”:false,“ canProvisionUser”:false,“ canUpgradeWorkbench”:false}}

1 个答案:

答案 0 :(得分:0)

问题在于,链外数据库中的默认用户(通过部署Azure区块链工作台创建)未映射到任何应用程序。 就像解决方法一样,您始终可以在数据库中手动添加此映射,之后便可以获取应用程序(并使用合同等)。

您需要做什么:

  1. 查找应用程序(Web API)的外部用户ID,该ID是使用Azure区块链工作台进行配置的。

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

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

现在这应该可行

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}]}