我是Azure函数的新手。 我想写一个Http触发器,它不仅会“失败”坏JSON(与我的架构不匹配,我想通过与他们提交的JSON有关的无效消息向调用者提供反馈)如何将HttpTrigger连接到设计器
好了,第一我长大VS2017。
然后我编码它。我可以用邮递员来测试它,它邮递员在测试过程中正常工作。
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
////using MyExceptionLibrary;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Schema;
namespace MyNamespace.AzureFunctionsOne
{
public static class MyFirstHttpTrigger
{
[FunctionName("MyFirstHttpTriggerFunctionName")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function MyFirstHttpTriggerFunctionName about to process a request.");
try
{
string jsonSchemaText = @"{
'description': 'A person',
'type': 'object',
'properties':
{
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
JSchema schema = JSchema.Parse(jsonSchemaText);
var content = req.Content;
string jsonContent = content.ReadAsStringAsync().Result;
JObject jobj = JObject.Parse(jsonContent);
IList<string> messages;
bool valid = jobj.IsValid(schema, out messages);
if (!valid)
{
string errorMsg = string.Join(",", messages);
throw new ArgumentOutOfRangeException(string.Format("Bad Json. ({0})", errorMsg));
}
}
catch (Exception ex)
{
string errorMsg = ex.Message; //// ExceptionHelper.GenerateFullFlatMessage(ex);
log.Error(errorMsg);
return req.CreateResponse(HttpStatusCode.BadRequest, errorMsg);
}
log.Info("C# HTTP trigger function MyFirstHttpTriggerFunctionName processed a request.");
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
然后我“发布“这种天蓝色的功能n到云端。
我的问题是现在........我该如何连接到逻辑应用程序设计器是触发器?
在下面,我可以添加通用请求触发器。
在下文中,我也找过我〜〜蔚蓝的HTTP触发器,我公布,没有运气。
所以我无法弄清楚如何让我的自定义HTTP触发器可用的逻辑应用程序设计,因此它可以是入口点触发。
我是否缺少一些基本概念?
我的最后一步就是:
我想要一个第三方来发布一些JSON到我的Azure的逻辑应用作为HTTP请求。这应该是触发器。但是我只想让触发器在提交有效的json时继续运行。 (我知道这可以通过通用请求触发器来完成)。我的警告(也就是我自定义的http触发器)是我希望第三方获取模式违规消息,以便他们知道他们做错了什么。
对于未来的读者。我的问题有点“关闭”,因为我最初并不了解Azure函数存在于Logic-Apps之外的世界中。我能够得到我想要的,但不是通过创建自定义的逻辑应用程序“触发器”。我在这里记录它。 https://granadacoder.wordpress.com/2017/08/21/actionconditionfailed-the-execution-of-template-action-condition-is-skipped-expected-status-values-succeeded-and-actual-value-failed- azure-logic-apps/ – granadaCoder