하늘색 함수에서 POST 내용을 읽으려고합니다. 나는 푸른 포털에서 정확한 샘플을 복사하기로 결정 이유를 개발하고 내 코드는 다음과 경우 : 내 목표는 "Telemetria"라고 내 법인이 POST 및 Desserialize를 읽고 저장하는 것입니다,Azure 함수에서 POST 내용을 읽을 수 없습니다.
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage; // Namespace for CloudStorageAccount
using Microsoft.WindowsAzure.Storage.Table; // Namespace for Table storage types
using System.Configuration;
using Newtonsoft.Json;
using System.IO;
namespace UnioAzureFunctions.Controllers
{
[RoutePrefix("api/telemetria")]
public class TelemetriaController : ApiController
{
[AllowAnonymous]
[HttpPost]
public async Task<HttpResponseMessage> Run(HttpRequestMessage request, TraceWriter log)
{
try
{
// parse query parameter
string name = request.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
// Get request body
string data = await request.Content.ReadAsAsync<string>();
var telemetria = JsonConvert.DeserializeObject<Telemetria>(data);
// Set name to query string or body data
// name = name ?? data?.name;
//TODO: Usar CloudCOnfigurationManager ou ConfigurationManager normal *
//// Parse the connection string and return a reference to the storage account.
//CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
// CloudConfigurationManager.GetSetting("StorageConnectionString"));
#region conexão com cloud table storage
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.AppSettings["StorageConnectionString"]);
// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
// Retrieve a reference to the table.
CloudTable table = tableClient.GetTableReference("telemetria");
// Create the table if it doesn't exist.
table.CreateIfNotExists();
// Create the TableOperation object that inserts the customer entity.
TableOperation insertOperation = TableOperation.Insert(telemetria);
// Execute the insert operation.
table.Execute(insertOperation);
#endregion
return name == null
? request.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: request.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
catch (Exception ex)
{
throw ex;
}
}
}
public class Telemetria : TableEntity
{
public Telemetria(string carteira, string crm, string app,
long idTenant, long idUsuario, string operadora, string action, DateTime dataHora)
{
Carteira = carteira;
Crm = crm;
App = app;
IdTenant = IdTenant;
IdUsuario = IdUsuario;
Operadora = operadora;
Action = action;
DataHora = dataHora;
}
public Telemetria()//não retirar - necessário para funcionar o tableEntity
{
}
public string Carteira { get; set; }
public string Crm { get; set; }
public string App { get; set; }
public long IdTenant { get; set; }
public long IdUsuario { get; set; }
public string Operadora { get; set; }
public string Action { get; set; }
public DateTime DataHora { get; set; }
}
}
당신이 볼 수 있듯이 이걸 내 푸른 창고 계정에 넣으세요. 이 줄의 내용을 읽을 수없는 이유는 모르겠습니다. string data = await request.Content.ReadAsAsync<string>();
데이터는 항상 null이며 그 이유를 모르겠습니다. 이것은 하늘빛 함수이므로 webapi로 동작을 시뮬레이트 할 수 없습니다.
어떤 도움을 환영합니다. 미리 감사드립니다.
콘텐츠를'문자열 '로 역 직렬화하기 때문에 Content의'ReadAsStringAsync()'메소드를 사용하지 않는 이유는 무엇입니까? '문자열 데이터 = 요청 대기 중 .Content.ReadAsStringAsync()' –