我应该在Azure隔离函数中使用Microsoft.AspNetCore.Mvc包吗?有什么缺点和优点?

chhkpiq4  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(101)

看起来微软的建议是使用Azure隔离函数而不是进程内函数。如果你打开Azure函数路线图,你可以看到隔离函数是.net 8 https://techcommunity.microsoft.com/t5/apps-on-azure-blog/net-on-azure-functions-roadmap/ba-p/2197916之后的唯一选择。
我们开始使用隔离函数(http触发器),但是我们发现在进程内和隔离函数之间有很多限制和轻微的包错配。更多细节可以通过这个链接https://learn.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-in-process-differences找到。
此外,azure函数和www.example.com API的可用API也存在差异Asp.net。
对我来说,第一个区别是默认情况下我必须使用HttpRequestData和HttpResponseData类。
Nuget仓库中有以下软件包https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Abstractionshttps://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Core
这些包将允许我在Azure函数中使用IActionResult。这反过来又会让使用HTTP触发器函数感觉像使用ASP.netAPI一样。
我的问题是:将这些包作为依赖项拉入到隔离的azure函数中有哪些优缺点?

  • 注意:我更关心的缺点,优点是种明显的,我们可以使用熟悉的类.它看起来像asp net pachage handels UserClaims更好.然而,如果你能列出更多的优点,那就太好了.*
rdrgkggo

rdrgkggo1#

.Net 7只使用函数应用程序的隔离进程和Microsoft.Azure.Functions.Worker.Http库。

不能将Microsoft.AspNetCore.Mvc与.Net 7函数应用一起使用。

即使你通过一个nuget添加了Microsoft.AspNetCore.mvc(你必须使用.Net 7函数应用程序)并连接你的函数来使用HttpRequest,它也不会工作,它只是在函数调用时设置为null... screenshot of .Net 7 function app using HttpRequest
您可以通过HttpRequestData对象访问FunctionContext,但这仍然不会像MVC HttpContext那样给予您用户声明。如果您想从授权头中提取它们,您必须编写中间件来实现,如以下示例所示:https://adamstorr.azurewebsites.net/blog/using-azure-functions-middleware-to-access-claimsprincipal-in-azure-static-web-apps

相关问题