我找不到任何资源来将运行状况检查添加到在 .NET 5.0 隔离中运行的 HTTPTrigger 功能应用程序。
static async Task Main()
{
var host = new HostBuilder()
.ConfigureAppConfiguration(configurationBuilder =>
{
configurationBuilder.AddEnvironmentVariables();
})
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices((builder, services) =>
{
var configuration = builder.Configuration;
services.AddDbContext(configuration);
// Add healthcheck here
services.AddHealthChecks()
// ...
// Map health checks
})
.Build();
await host.RunAsync();
}
Run Code Online (Sandbox Code Playgroud)
本指南指出我可以添加 MapHealthChecks (但在 asp.net core 中)
var app = builder.Build();
app.MapHealthChecks("/healthz");
app.Run();
Run Code Online (Sandbox Code Playgroud)
如何将其转换为在我的 dotnet 隔离应用程序中运行?
我该如何解决此问题?
我有几个使用以下触发器签名的 Azure 函数 [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")。
这些功能按照消耗计划运行。
它们每天会被触发 2-3 次。
该函数间歇性无法触发,但出现以下异常:
public class AlpacaSample
{
private ILogger logger;
public AlpacaSample(ILoggerFactory loggerFactory)
{
this.logger = loggerFactory.CreateLogger<AlpacaSample>();
}
[Function("AlpacaSample")]
public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req)
{
try
{
this.requestData = req;
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var message = $"Received a trigger {requestBody}";
this.logger.LogInformation(message);
// Business logic removed for brevity
return await this.CreateStringResponse(req, "All Good");
}
catch (Exception ex)
{
string responseMessage =
$"Error occurrend while …Run Code Online (Sandbox Code Playgroud) 有没有办法禁用逻辑应用 HTTP 触发器的 SAS 授权方案?
在文档中,我读到了以下内容: “对请求端点的入站调用只能使用一种授权方案,SAS 或 Azure Active Directory 开放身份验证。尽管使用一种方案不会禁用另一种方案...” - 来源:https ://learn.microsoft.com/en-us/azure/logic-apps/logic-apps-securing-a-logic-app
我想要做什么: 我想禁用 SAS 授权方案。提供正确的 SAS 参数时,不应触发逻辑应用。或者,如果无法停用 SAS 授权,则在使用 SAS 的情况下它应该返回错误。只有 OAuth 授权才能给出有效结果。这可能吗?
我在 dotnet5 中有一组 HttpTrigger Azure 函数,我想从这些 Azure 函数返回 JSON。我正在使用return new OkObjectResult(myObject),但没有提供 JSON,而是 JSON 位于返回的 JSON 的“Value”元素中,即结果看起来有点像
{
"Value": {
"MyValueOne": true,
"MyValueTwo": 8
},
"Formatters": [],
"ContentTypes": [],
"DeclaredType": null,
"StatusCode": 200
}
Run Code Online (Sandbox Code Playgroud)
与预期相反
{
"MyValueOne": true,
"MyValueTwo": 8
}
Run Code Online (Sandbox Code Playgroud)
我已经走了几条具有不同返回对象的路径,但它们似乎总是具有这些额外的值,并且我想要返回的 JSON 通常包含在其他 JSON 中的值或内容中,例如: JsonResult(myObject) OR ContentResult() { 内容 = serializedVersionOfMyObject }
我什至尝试了 HttpResponseMessage 路径;但在 HttpTrigger 和 Tast 的预期返回方面遇到了麻烦
我觉得我错过了一些简单的东西;从 Azure 函数返回“just json”的预期/期望/直接方式是什么?
我有以下由 HTTP 触发的 Azure 函数。我已使用此处的链接为我的端点设置了 Swagger 。以下 API 需要一组查询字符串参数,即"name"、"email"、"phone",因此它可以对目标对象进行一些搜索。目前,函数的主体当然还没有实现,但这对于这个问题来说并不重要。
我的问题:如何在 swagger UI 中显示查询字符串参数?
功能:
[FunctionName(nameof(GetBookingCalendarsFunction))]
public async Task<IActionResult> GetAllAsync(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET", Route = "bookings")] HttpRequest request,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Name: {request.Query["name"]}, email: {request.Query["email"]}, phone: {request.Query["phone"]}");
}
Run Code Online (Sandbox Code Playgroud)
此功能的 swagger UI
注意:我不想使用路由值而不是查询字符串参数,因为这些参数是可选的,并且调用者可能不想提供其中之一。
例如,我尝试了以下方法,但如果删除任何参数,它将失败,并显示 404,因为它将它们作为路由的一部分(即使它会在 Swagger 中显示它们)
[FunctionName(nameof(GetBookingCalendarsFunction))]
public async Task<IActionResult> GetAllAsync(
[HttpTrigger(AuthorizationLevel.Anonymous, "GET", Route = "bookings/name={name}&email={email}&phone={phone}")] HttpRequest request,
string name, string email, string phone,
ILogger log)
{
log.LogInformation("C# …Run Code Online (Sandbox Code Playgroud) 我有带有 Http 触发器的 TypeScript azure 函数。我正在使用 POST 方法并将正文发送到 azure 函数。但我无法读取、请求正文数据作为 Javascript 对象。
我的功能代码
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
context.log('HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
if (name) {
context.res = {
// status: 200, /* Defaults to 200 */
body: "Ar Item search " + (req.query.name || req.body.name)
};
}
else {
context.res = {
status: 400,
body: …Run Code Online (Sandbox Code Playgroud) .net ×3
.net-5 ×2
azure ×1
azure-sas ×1
c# ×1
health-check ×1
node.js ×1
swagger ×1
swagger-ui ×1
typescript ×1