У меня есть функция Azure, которая успешно ставит в очередь записи таблицы хранения, как я могу видеть в обозревателе хранилищ Azure.
У меня есть функция Azure, которая успешно отправляет сообщения через SendGrid, и должен срабатывать при добавлении вышеупомянутой очереди, но это не так.
Я предполагаю, что есть проблема с конфигурацией. Они оба находятся в одном приложении-функции и используют одну и ту же строку подключения, но функция SendGrid не запускается. Обе функции сами по себе ванильные, за вычетом изменений моего адреса электронной почты. Есть ли еще какой-нибудь конфиг?
HttpPost (CRUD) -CSharp1
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
],
"authLevel": "function"
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "table",
"name": "outTable",
"tableName": "orders",
"connection": "matching_connection_string",
"direction": "out"
}
],
"disabled": false
}
SendGridCSharp1
{
"bindings": [
{
"type": "sendGrid",
"name": "message",
"direction": "out",
"subject": "",
"text": ""
},
{
"type": "queueTrigger",
"name": "order",
"queueName": "orders",
"connection": "matching_connection_string",
"direction": "in"
}
],
"disabled": false
}
Обновление за ответ @ DAXaholic
DAXaholic предположил, что я пишу в таблицу, но запускаюсь из очереди. Я обновил свою исходящую конфигурацию (изменил последний тип привязки на queue
) и получаю сообщение об ошибке о том, что не знаю, какой конструктор использовать: Function ($HttpPOST(CRUD)-CSharp1) Error: Can't figure out which ctor to call.
Я попытался изменить пространство имен на Microsoft.WindowsAzure.Storage.Queue
, но, похоже, это не дало результата.
Код ниже:
#r "Microsoft.WindowsAzure.Storage"
using System.Net;
using Microsoft.WindowsAzure.Storage.Table;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, ICollector<Order> outTable, TraceWriter log)
{
var formData = await req.Content.ReadAsFormDataAsync();
if(string.IsNullOrWhiteSpace(formData.Get("Name")))
{
return req.CreateResponse(HttpStatusCode.BadRequest, new {
error = "no 'Name' property"
});
}
string name = formData["Name"].ToString();
outTable.Add(new Order()
{
PartitionKey = "Functions",
RowKey = Guid.NewGuid().ToString(),
OrderId = string.Format("order{0}", name),
CustomerName = name,
CustomerEmail = string.Format("{0}@{1}.com", name, name)
});
return req.CreateResponse(HttpStatusCode.Created);
}
public class Order : TableEntity
{
public string OrderId { get; set; }
public string CustomerName { get; set; }
public string CustomerEmail { get; set; }
}