ASP.NET MVC ExecuteResult 与 ActionResult
ASP.NET MVC ExecuteResult vs ActionResult
我看到它曾经将 headers 添加到响应中,然后 return 用于流式传输的文件。
public override void ExecuteResult(ControllerContext context)
{
...
response.AddHeader("Accept-Ranges", "bytes");
response.AddHeader("Content-Length", responseLength.ToString());
response.Cache.SetCacheability(HttpCacheability.Public); //required for etag output
response.Cache.SetETag(etag); //required for IE9 resumable downloads
response.ContentType = blockBlob.Properties.ContentType;
blockBlob.DownloadRangeToStream(response.OutputStream, startIndex, responseLength);
}
使用 ExecuteResult
与 ActionResult
有何区别?如何使其异步?
ExecuteResult
是 ActionResult
上的抽象方法。 ActionResult
是从 ASP.NET MVC 控制器返回的任何结果的基础 class,除了 C# 中的内置数据类型。
如果您正在实施 ExecuteResult
它可能是结果的自定义实施。
这在 this documentation page 的 ActionResult.ExecuteResult
文档中进行了解释,其中说明如下:
(Method ExecuteResult) Enables processing of the result of an action method by a custom type that inherits from the ActionResult class.
ExecuteResult
是ActionResult
唯一的抽象方法。 MVC 框架在操作方法 returns 之后执行此方法,以便向浏览器生成输出。
namespace System.Web.Mvc
{
public abstract class ActionResult
{
public abstract void ExecuteResult(ControllerContext context);
}
}
因此,两者之间确实没有区别 - 返回任何 ActionResult
subclass 告诉 MVC 框架在 class 上执行 ExecuteResult
方法。
如果使用 MVC 5,则无法 运行 异步。但是,MVC Core ActionResult
class 包含一个 ExecuteResultAsync
方法。
我看到它曾经将 headers 添加到响应中,然后 return 用于流式传输的文件。
public override void ExecuteResult(ControllerContext context)
{
...
response.AddHeader("Accept-Ranges", "bytes");
response.AddHeader("Content-Length", responseLength.ToString());
response.Cache.SetCacheability(HttpCacheability.Public); //required for etag output
response.Cache.SetETag(etag); //required for IE9 resumable downloads
response.ContentType = blockBlob.Properties.ContentType;
blockBlob.DownloadRangeToStream(response.OutputStream, startIndex, responseLength);
}
使用 ExecuteResult
与 ActionResult
有何区别?如何使其异步?
ExecuteResult
是 ActionResult
上的抽象方法。 ActionResult
是从 ASP.NET MVC 控制器返回的任何结果的基础 class,除了 C# 中的内置数据类型。
如果您正在实施 ExecuteResult
它可能是结果的自定义实施。
这在 this documentation page 的 ActionResult.ExecuteResult
文档中进行了解释,其中说明如下:
(Method ExecuteResult) Enables processing of the result of an action method by a custom type that inherits from the ActionResult class.
ExecuteResult
是ActionResult
唯一的抽象方法。 MVC 框架在操作方法 returns 之后执行此方法,以便向浏览器生成输出。
namespace System.Web.Mvc
{
public abstract class ActionResult
{
public abstract void ExecuteResult(ControllerContext context);
}
}
因此,两者之间确实没有区别 - 返回任何 ActionResult
subclass 告诉 MVC 框架在 class 上执行 ExecuteResult
方法。
如果使用 MVC 5,则无法 运行 异步。但是,MVC Core ActionResult
class 包含一个 ExecuteResultAsync
方法。