Не удалось опубликовать функцию HTTP Azure - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь опубликовать свою HTTP-функцию Azure из кода Visual Studio на нашей платформе Azure.

Код работает нормально при локальном запуске функции и успешно публикуется, но при публикации выдает следующую ошибку.

Я попытался использовать DocumentDB вместо CosmosDB, но в нем отсутствует функция вставки, необходимая для вставки данных в CosmosDB.У Stackoverflow нет решения этой конкретной проблемы.

Код функции

//write to cosmosdb
[FunctionName("InsertItem")] 
public static HttpResponseMessage Run( 
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)]HttpRequestMessage req, 
    [CosmosDB( 
        databaseName: "ToDoList", 
        collectionName: "RFIDContainer", 
        ConnectionStringSetting = "myCosmosDBConnection")] 
    out RFIDBaseTag document, 
    ILogger log) 
{ 
    string hexData = "";
    string afi = "";
    string eid = "";
    string dsfid = "";
    //Guid DeviceID = new Guid();
    //Guid AppID = new Guid();

    var content = req.Content; 
    string jsonContent = content.ReadAsStringAsync().Result; 

    dynamic json = JsonConvert.DeserializeObject<MyClass>(jsonContent);

    hexData = json?.hexData;
    afi = json?.afi;
    eid = json?.eid;
    dsfid = json?.dsfid;

    /*Guid devGuid;
    Guid.TryParse(json.AppID.ToString(), out devGuid);
    DeviceID = devGuid;

    Guid appGuid;
    Guid.TryParse(json.AppID.ToString(), out appGuid);
    AppID = appGuid;*/

    byte[] hexToByte = AzureRFIDTagReader.StringToByteArray(hexData);

    RawRFIDReading raw = new RawRFIDReading();

    raw.afi = afi;
    raw.eid = eid;
    raw.dsfid = dsfid;
    raw.RawData = hexToByte;

    RFIDBaseTag rtag = RFIDTagFactory.GetTag(raw);
    string serializedtag = JsonConvert.SerializeObject(rtag);

    //document = JsonConvert.DeserializeObject<MyClass>(jsonContent);
    //document = JsonConvert.DeserializeObject<RFIDBaseTag(serializedtag);
    document = rtag;

    log.LogInformation($"C# Queue trigger function inserted one row");

    return new HttpResponseMessage(HttpStatusCode.Created); 
}

local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=zzzz",
    "myCosmosDBConnection": "AccountEndpoint=xxx:443/;AccountKey=www;"
  }
}

Сообщение об ошибке:

Функция (xxx / InsertItem) Ошибка: Microsoft.Azure.WebJobs.Host: Ошибка метода индексации «InsertItem».Microsoft.Azure.WebJobs.Host: невозможно разрешить значение свойства CosmosDBAttribute.ConnectionStringSetting.Убедитесь, что параметр существует и имеет допустимое значение.

Я могу отправлять сообщения в функцию локально, но не в Azure.

Есть предложения?

1 Ответ

2 голосов
/ 20 сентября 2019

Когда вы публикуете свою функцию, ваш local.settings.json файл не публикуется.

Эти параметры необходимо добавить как часть параметров приложения функций Azure.В вашем случае вам нужно добавить туда myCosmosDBConnection со значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...