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
相关产品推荐
相关产品推荐

