You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dapr Azure Storage Queue输入绑定OPTIONS方法调用失败求助

问题:.NET 6 WebAPI配置Dapr Azure Storage Queue输入绑定启动失败

我按照Dapr文档为.NET 6 WebAPI项目配置了Azure Storage Queue输入绑定,项目本地运行正常,但通过Dapr启动时初始化失败,报错如下:

"could not invoke OPTIONS method on input binding subscription endpoint \"Process\": %!w(*errors.errorString=&{the server closed connection before returning the first response byte. Make sure the server returns 'Connection: close' response header before closing the connection})"

由于Dapr会对绑定端点发起OPTIONS请求,我已自定义了OPTIONS端点,也曾添加CORS支持(现已注释),但均未解决问题,求帮助。


相关配置

1. 绑定组件配置(./Component/binding.yaml,已脱敏)

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: Process
  namespace: default
spec:
  type: bindings.azure.storagequeues
  version: v1
  metadata:
  - name: accountName
    value: "******"
  - name: accountKey
    value: "******"
  - name: queueName
    value: "queue-name"
  - name: ttlInSeconds
    value: "60"
  - name: decodeBase64
    value: "true" 

2. Program.cs代码

var builder = WebApplication.CreateBuilder(args);

//var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
//builder.Services.AddCors(options =>
//{
//    options.AddPolicy(name: MyAllowSpecificOrigins,
//                      policy =>
//                      {
//                          policy.WithOrigins("http://localhost", "*");
//                      });
//});

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();
//app.UseCors(MyAllowSpecificOrigins);
app.UseAuthorization();
app.MapControllers();

app.Run();

3. TestController.cs代码

using Microsoft.AspNetCore.Mvc;

[ApiController]
public class TestController : ControllerBase
{
    private readonly ILogger<TestController> _logger;

    public TestController(ILogger<TestController> logger)
    {
        _logger = logger;
    }

    [HttpPost("Process")]
    public ActionResult<string> Process([FromBody] Message message)
    {
        try
        {
            var messageJson = System.Text.Json.JsonSerializer.Serialize(message);
            _logger.LogInformation($"SUCCESS: MessageArrived: {messageJson}");
            return Ok(message.Id);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "ERROR: ");
            return BadRequest(ex.Message);
        }
    }

    [HttpOptions("Process")]
    public ActionResult<string> ProcessOptions([FromBody] object message)
    {
        return Ok();
    }
}

public class Message
{
    public string Id { get; set; }
    public string Name { get; set; }
}

4. 启动命令

dapr run --log-level debug --app-id dnx --app-port 7221 --dapr-http-port 3500 dotnet run test.csproj

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:05:24