2016-06-05 2 views
1

Я имею трудно используя DocumentDB для создания документов с использованием Visual Studio 2015 обновления 2 и Vb.netНевозможно получить Azure DocumentDB работать с VB.NET

Вызов CreateDocumentAsync уходит и никогда не возвращается. Я попытался выполнить одни и те же вызовы на C#, используя те же параметры, и они работают нормально, но мой клиент требует, чтобы я использовал Vb.NET

Я уменьшил проблему до тестовой программы, которая показана ниже.

Main.vb

Imports Microsoft.Azure.Documents 
Imports Microsoft.Azure.Documents.Client 

Module Module1 


    Sub Main() 
     Test() 
    End Sub 

    Public Async Sub Test() 

     Dim client As New DocumentClient(New Uri("https://XXXXXXX.documents.azure.com:443/"), "XXXXXXXXX==") 


     ' Create a new document 


     Dim x As New JGR 
     x.id = Guid.NewGuid.ToString() 
     x.name = "Graham" 
     Dim y As ResourceResponse(Of Document) = Await  client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("XXXX-Playground", "XXXXXX"), x, Nothing, True) 
    End Sub 
End Module 

JGR.VB

Imports Newtonsoft.Json 

Public Class JGR 

    <JsonProperty(PropertyName:="id")> 
    Property id As String 
    Property name As String 
End Class 

ответ

0

Ваш код, кажется, работать нормально. Я создал новую единую коллекцию разделов и протестировал ее с пакетом nuget Microsoft.Azure.DocumentDB 1.7.1 с Newtonsoft.Json версии 6.0.8. Я также попробовал обновление до Newtonsoft.json 8.0.3, все еще работает нормально. Затраты на запрос для создания документа: 5.52

Я бы рекомендовал вам изменить подпись метода от Sub до функции, которая возвращает задачу, чтобы захватить ошибки - если не программа может выйти до завершения вашего запроса.

Sub Main() 
    Test().Wait() 
End Sub 

Public Async Function Test() As Task 
    Dim client As New DocumentClient(New Uri("https://stacktest.documents.azure.com:443/"), "g6YlmeYQkoIlrKhuToNIF7kDeHn5VSKiljx4FOijNUtae25cEyNwnKO5TXCT7Y2yWifldxwKb8AIZWhaAtQ5tw==") 


    ' Create a new document 

    Dim x As New JGR 
    x.id = Guid.NewGuid.ToString() 
    x.name = "Graham" 
    Dim y As ResourceResponse(Of Document) = Await client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("db1", "col1"), x, Nothing, True) 
End Function 
+0

Спасибо, что у меня не было исключения - {"Сообщение: {" "Errors" ": [" "Ресурс владельца не существует" "]} ... любая идея, что это значит? –

+0

my предположим, что либо коллекция, либо база данных не существуют. Проверьте свои имена и убедитесь, что они верны. Также убедитесь, что эти ресурсы не удалены в Azure. – hsulriksen

+0

Спасибо за ваш ответ - я проверил все это, подумал, что настало время удалите их и попытайтесь их воссоздать. –

0

Я не программист VB, так что я не совсем знакомы с асинхронным в VB, но я уверен, что проблема с кодом асинхронным. Когда вы вызываете Sub, нет возврата Задача, поэтому ваш код не будет ждать завершения каких-либо операций Async.

Вы можете обернуть его в задаче и вызове метода, как это:

Sub Main() 
    Dim task = New Task(AddressOf Test) 
    task.Start() 
    task.Wait() 
End Sub 

Это должно решить проблему. Однако это очень много. Альтернативой является изменение Sub на функцию и возвращение задачи с каким-то сообщением статуса.

Надеюсь, что это поможет.

+0

Спасибо - это помогло мне получить исключение :-) –

Смежные вопросы