Azure DocumentDB,上传af执行时 - 没有结果?

时间:2016-03-09 13:48:13

标签: azure webrequest azure-cosmosdb

在我的项目中,我应该从openweathermap.org获取数据并将其放入Azure中我的DocumentDB数据库的集合中。

下面的代码在我的开发机器上本地工作,但是当我上传项目时,它运行并成功(表示仪表板)但没有创建文档。如果我从本地机器运行,我只能创建文件。

为什么?

这是我的代码:

public static void Main()
    {


        JobHost host = new JobHost();
        // The following code ensures that the WebJob will be running continuously
        host.Call(typeof(Program).GetMethod("saveWeatherDataToAzureDocumentDB"));

    }

    [NoAutomaticTrigger]
    public static async void saveWeatherDataToAzureDocumentDB()
    {
        string endpointUrl = ConfigurationManager.AppSettings["EndPointUrl"];
        string authorizationKey = ConfigurationManager.AppSettings["AuthorizationKey"];

        string url = "http://api.openweathermap.org/data/2.5/weather?q=hanstholm,dk&appid=44db6a862fba0b067b1930da0d769e98";


        var request = WebRequest.Create(url);
        string text;
        var response = (HttpWebResponse)request.GetResponse();

        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            text = sr.ReadToEnd();
        }


        // Create a new instance of the DocumentClient
        var client = new DocumentClient(new Uri(endpointUrl), authorizationKey);

        // Check to verify a database with the id=FamilyRegistry does not exist
        Database database = client.CreateDatabaseQuery().Where(db => db.Id == "weatherdata").AsEnumerable().FirstOrDefault();
        // If the database does not exist, create a new database
        if (database == null)
        {
            database = await client.CreateDatabaseAsync(
                new Database
                {
                    Id = "weatherdata"
                });
        }

        // Check to verify a document collection with the id=FamilyCollection does not exist
        DocumentCollection documentCollection = client.CreateDocumentCollectionQuery(database.SelfLink).Where(c => c.Id == "weathercollection").AsEnumerable().FirstOrDefault();

        // If the document collection does not exist, create a new collection
        if (documentCollection == null)
        {
            documentCollection = await client.CreateDocumentCollectionAsync("dbs/" + database.Id,
                new DocumentCollection
                {
                    Id = "weathercollection"
                });
        }

        //Deserialiser til et dynamisk object
        if (text == "")
        {
            mark m = new mark() { name = "Something" };

            await client.CreateDocumentAsync(documentCollection.DocumentsLink, m);

        }
        else
        {
            var json = JsonConvert.DeserializeObject<dynamic>(text);
            json["id"] = json["name"] + "_" + DateTime.Now;
            await client.CreateDocumentAsync(documentCollection.DocumentsLink, json);
        }

    }
    public sealed class mark
    {
        public string name { get; set; }
    }

更新 - 这是我在App.config中的内容

<appSettings>
<!-- Replace the value with the value you copied from the Azure management portal -->
<add key="EndPointUrl" value="https://<My account>.documents.azure.com:443/"/>
<!-- Replace the value with the value you copied from the Azure management portal -->
<add key="AuthorizationKey" value="The secret code from Azure"/>

此外,在DocumentDB帐户中,我找到了这样的连接字符串。 AccountEndpoint = https://knoerregaard.documents.azure.com:443/;AccountKey=my密码 我应该如何将其应用于WebJob?

欢迎你的帮助!

0 个答案:

没有答案