繁体   English   中英

如何在.NET Framework 4.6.1中使用IActionResult?

[英]How to use IActionResult in .NET Framework 4.6.1?

在过去的几个小时里,我一直在寻找答案,没有任何成功。 我对编程比较陌生,所以请放轻松我:-)

我的问题是,我的解决方案中的一个项目似乎无法使用IActionResult,该解决方案的目标是.NET Framework 4.6.1,但在针对.NET Standard 2.0的相同解决方案(不同项目)中我可以使用它。

我试图安装完全相同的Nuget包,除了目标框架外,一切看起来完全一样。

我只想使用IActionResults编写Azure Functions,如:

 public static async Task<IActionResult> MyFuntcion([HttpTrigger(AuthorizationLevel.Function, "get", Route = null")]HttpRequest req, TraceWriter log)
    {

      //Do some stuff then redirect

    }

我猜我的目标框架是什么导致我无法使用IActionResult,但我不明白为什么。

任何帮助都将非常感激,特别是如果有人知道如何使这项工作。

谢谢

简洁版本

您不能将Full Framework MVC或Web API中的IActionResult用作结果对象。 您必须先将其映射到适当的类型。 您可能应该在类库中使用IActionResult,让核心项目处理返回类型

ASP.NET Core不需要.NET Core运行时,它也可以定位Full Framework。 也许您可以使用针对主项目的完整框架的ASP.NET Core项目?

说明

ASP.NET Core是ASP.NET 5的“新”名称。它是一个新的框架,它融合了MVC和Web API堆栈,并且构建为在较旧的Full框架和当时称为DNXCore的框架上运行。 这两个名称都改为ASP.NET Core 1.0和Core .NET 1.0,导致我们今天的困惑。

在ASP.NET Core之前,ASP.NET MVC和Web API是两个不同的堆栈,它们使用不同的控制器基类并返回不同的结果。 ASP.NET MVC使用抽象的ActionResult类和Web API使用了IHttpActionResult接口。 使用接口意味着测试和模拟结果等等容易得多。 它还意味着实现它的类不必处理可能不需要的属性和基本方法。

ASP.NET Core ,Web框架中,整个堆栈经过重新设计,现在只有一个堆栈,其中包含一个用于结果的基础接口IActionResult Core的ActionResult是默认实现,但任何人都可以创建不同的实现。 例如, RedirectResult不需要Content属性,因此它没有。

只要添加了适当的包,此接口就可用于每个.NET Standard 2.0库。

这并不意味着它可以用作ASP.NET MVC 6或Web API 2项目中的实际返回类型,因为MVC的ActionResult和Web API的IHttpActionResult都没有实现它。 必须编写代码以从具体的IActionResult实例映射到具体的MVC ActionResult或Web API IHttpActionResult实例。

如果您的主项目是ASP.NET Core,则可以使用该接口,无论它是在Full框架还是Core框架上运行。

.NET标准

.NET Standard是一组API规范,而不是特定的运行时。 每个版本都指定一组应由符合该标准版本的运行时提供的类和API。 当创建.NET Standard 2.0库时,它意味着代码可以使用2.0版本中定义的任何类和API。

只添加界面

IActionResult 不是 .NET Standard 2.0的一部分。 它由Microsoft.AspNetCore.Mvc.Abstractions包提供。

解。

我需要安装Microsoft.AspNetCore.Mvc包才能使其正常工作。 为我的新手提问,并非常感谢你的帮助。

编辑:正如@PanagiotisKanavos用IActionResult的Microsoft.AspNetCoreMvc.Abstractions包编写的那样。 需要一些其他的东西,所以去整个包。

它甚至存在于.net中吗? 它似乎只存在于.net核心中。

微软的消息来源:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.iactionresult?view=aspnetcore-2.1

请参阅该页面上的“适用于”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM