目前是否有办法使用类似于MVC框架中的数据注释和模型状态的方法来验证Azure函数中的对象?或者函数中数据验证和错误响应的标准方法是什么?
所以我正在测试我的一些路由Postman,我似乎无法接受此调用:
API函数
[RoutePrefix("api/Employees")]
public class CallsController : ApiController
{
[HttpGet]
[Route("{id:int?}/Calls/{callId:int?}")]
public async Task<ApiResponse<object>> GetCall(int? id = null, int? callId = null)
{
var testRetrieve = id;
var testRetrieve2 = callId;
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
邮差要求
http:// localhost:61941/api /员工/电话不工作
错误:
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:61941/api/Employees/Calls'.",
"MessageDetail": "No action was found on the controller 'Employees' that matches the request."
}
Run Code Online (Sandbox Code Playgroud)
http:// localhost:61941/api/Employees/1/Calls WORKS
http:// localhost:61941/api/Employees/1/Calls/1 WORKS
知道为什么我不能在我的前缀和自定义路线之间使用可选项吗?我已经尝试将它们组合成一个自定义路线并且不会改变任何东西,任何时候我试图删除它导致问题的ID.
我有一个在 Azure 中使用的逻辑应用程序,我需要从 Http 触发器上的某些 JSON 访问某个嵌套值。
我需要访问阈值 (5) 和维度数组中第二项的值 (accountscontacts-account-deleted) 并通过逻辑应用编辑器中的表达式语法动态显示这些但无法弄清楚我在哪里我的表达有问题。
我正在尝试使用此语法来访问阈值,
first('allOf')?['threshold']
我正在尝试使用此表达式来访问第二维值,
last(first('allOf')?['dimensions'])?['value']
这些似乎都不起作用,我无法弄清楚我的 Expression 语法哪里出错了。当我尝试评估维度值逻辑时,它会抛出此错误(阈值逻辑也因类似错误而失败)
无效模板。无法在“1”行和“1660”列的“Post_message”输入中处理模板语言表达式:“模板语言表达式”last(first('allOf')?['dimensions'])?['value'] ' 无法计算,因为无法选择属性 'dimensions'。“字符串”类型的值不支持属性选择。请参阅https://aka.ms/logicexpressions了解使用详情。'。
JSON 有效负载
{
"schemaId": "AzureMonitorMetricAlert",
"data": {
"version": "2.0",
"properties": null,
"status": "Deactivated",
"context": {
"timestamp": "2019-06-11T21:26:20.5035755Z",
"id": "/URLTEXT/",
"name": "FBIS Event Bus DLQ Threshold Notifier",
"description": "",
"conditionType": "SingleResourceMultipleMetricCriteria",
"severity": "3",
"condition": {
"windowSize": "PT5M",
"allOf": [
{
"metricName": "DeadletteredMessages",
"metricNamespace": "Microsoft.ServiceBus/namespaces",
"operator": "GreaterThan",
"threshold": "5",
"timeAggregation": "Average",
"dimensions": [
{
"name": "ResourceId",
"value": …Run Code Online (Sandbox Code Playgroud) 我真的很喜欢在门户网站中使用Azure功能,但我开始需要一些我曾经用于提交我的git仓库的工具,轻松添加程序集,并且只是在更熟悉的环境中工作.
是否可以在门户中创建Azure功能应用程序以及可能的功能本身,然后转移到Visual Studio并将该功能应用程序作为项目导入?或者我接近这个错误?我知道我们可以直接从Visual Studio创建,然后发布到Azure,也许这就是我们应该首先做的方式.
我们只是将 Visual Studio Team Services 集成为我们的新工作流程,并在提交到 master 的基础上设置自动构建。目前,承诺掌握并发起新构建的个人将在构建失败或成功时收到通知电子邮件。
我们以为我们都会收到通知,但事实并非如此。我们已经查看了 VSTS 中的通知设置,但到目前为止还没有找到任何允许我们所有人在构建完成时收到通知的设置。是否有我们缺少的设置或者当前不支持此功能?
这可能超出了当前状态的门户网站的范围,但我想知道人们如何通过门户网站本身的源代码控制来管理他们的功能,或者他们是什么.
我非常喜欢门户网站的构建方式,并希望利用它来快速构建无服务器功能,但我还没有找到一种方法可以链接到github存储库或在门户网站中实现某种源代码控制.我知道我可以在Visual Studio中开发并发布到Azure但我觉得我们最终失去了许多功能,这些功能仅在当前用于快速设置的门户中.
当前的Azure功能架构是否有一些我缺少的东西,有一种方法可以做到这一点?或者大多数人只是在VS内部开发?
我们有一个 Azure 函数,它应该同时处理多个服务总线触发器,我假设正在发生的是它被拆分到多个实例中,这在我们端导致了一些并发问题。
我们需要我们的函数充当单例,以便我们可以一次处理一个请求而不会发生任何冲突。根据我们在本文 ( https://docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#singleton-attribute ) 中的研究,我们应该能够做到这一点。
我们的函数看起来像这样:
[Microsoft.Azure.WebJobs.Singleton(Mode = SingletonMode.Listener)]
[FunctionName("AccountCreatedSubscriber")]
public static void Run([ServiceBusTrigger("accountscontacts-account-created", "license-keys", Connection = "FBISEventBus")]BrokeredMessage message, ILogger log)
{
log.LogInformation($"{{ Message received from accountscontacts-account-created topic }}");
// Do Work
log.LogInformation($"{{ Message sent to account creation handler }}");
}
Run Code Online (Sandbox Code Playgroud)
为了备份,我们的 host.json 文件中也有这个,
{
"serviceBus": { "maxConcurrentCalls": 1 }
}
Run Code Online (Sandbox Code Playgroud)
但无论出于何种原因,我们的功能仍在并行运行。有任何想法吗?
在这里寻找一些设计建议。我现在已经遇到过几次这个问题,并且感觉我的方法到目前为止一直低于标准。
例如,我想创建一个名为GetConversation 的方法。现在,无论您给它一个id还是一个备用地址参数,GetConversation都将返回相同的数据。只是偏好或任何可用数据的问题,使其更加灵活和易于使用。这很好,但我遇到的问题是这些都是字符串参数。理想情况下,它看起来像这样,
public object GetConversation(string id)
{
// Get Conversation by id
}
public object GetConversation(string address)
{
// Get Conversation by address
}
Run Code Online (Sandbox Code Playgroud)
当然,这会因为模棱两可而失败。当用户深入到GetConversation时,编译器不知道要访问哪个函数。
这让我想到了灵活解决方案的第二种方法,
public object GetConversation(string id, string address)
{
// Get Conversation by id or address
if (id != null)
{
// Get by id
}
else if (address != null)
{
// Get by address
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但现在我开始倾向于首先按 id 搜索。不一定是件坏事,但我觉得这不是最有凝聚力的解决方案,我必须在两次检查的失败检查之外明确设置返回值。
关于更好的方法的任何想法?
我很惊讶我找不到答案,但我有一个Azure功能(HTTP触发器)我只是想将内容反序列化为一个对象.以前用V1我能做到这一点,
功能V1
[FunctionName("RequestFunction")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
// Successful deserialization of the content
var accountEvent = await req.Content.ReadAsAsync<AccountEventDTO>();
// Rest of the function...
}
Run Code Online (Sandbox Code Playgroud)
但现在使用V2看起来更像是这样,
功能V2
[FunctionName("RequestFunction")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, ILogger log)
{
// Content doesn't exist on HttpRequest anymore so this line doesn't compile
var accountEvent = await req.Content.ReadAsAsync<AccountEventDTO>();
// Rest of the function...
}
Run Code Online (Sandbox Code Playgroud)
我可以让主体从HttpRequest对象访问流,但我不确定如何将其转换为预期的对象.有任何想法吗?
我知道我们目前仍在预览VSTS维基,但我只是想知道是否支持嵌入/上传gif.我希望为我们的文档提供一些额外的文档,而不仅仅是标准的图像和定义.
c# ×7
azure ×5
azure-devops ×2
asp.net ×1
concurrency ×1
http ×1
json ×1
publish ×1
triggers ×1
validation ×1
wiki ×1