AWS 新手..
我们有一个作为 lambda 函数在无服务器 aws 实例上运行的 .NET Core 微服务。
我们的 Controller 看起来像这样
[Route("api/[controller]")]
[ApiController]
public class SomeController : ControllerBase
{
[HttpGet()]
[Route("getsomedoc")]
public async Task<IActionResult> GetSomeDoc()
{
byte[] content;
//UI needs this to process the document
var contentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
contentDisposition.FileName = "File Name";
Response.Headers[HeaderNames.ContentDisposition] = contentDisposition.ToString();
return File(content, "application/octet-stream");
}
[HttpPost()]
[Route("somepost")]
public async Task<IActionResult> SomePost()
{
return null;
}
}
网址
{{URL}}/getsomedoc
{{URL}}/somepost
为了让 getsomedoc 正常工作,我们在 AWS 包设置中启用了“二进制媒体类型”/,否则它会返回字节数组而不是文件。
但是当 UI 使用 方法:OPTIONS & Access-Control-Request-Method as POST
当我们删除二进制媒体类型时,“somepost”开始工作。
寻找关于为什么会发生这种情况的建议?以及我们可以从网关添加/删除什么来解决这个问题。
最佳答案
好吧,我们最终以一种奇怪的方式解决了这个问题。
为 lambda 添加了两个网关 - 其中一个启用了二进制 - 在另一个上禁用。
为了 getsomedoc - 使用启用二进制媒体类型的 postsomedoc - 使用另一个
希望有更好的方法!!
关于asp.net-core - 启用二进制媒体类型会中断 AWS Lambda 中的选项 POST 调用 (CORS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59568148/