gpt4 book ai didi

c#-4.0 - 实现 System.Web.Http.WebHost.WebHostBufferPolicySelector.IHostBufferPolicySelector

转载 作者:行者123 更新时间:2023-12-02 22:01:10 25 4
gpt4 key购买 nike

我正在尝试关注 this有关通过 Asp.Net Web 表单使用 Web Api 类上传大文件的网络博客。如果您浏览这篇文章,您会注意到,为了避免由于缓冲大文件而导致内存不足,他们建议重写 IHostBufferPolicySelector 接口(interface)。我在哪里实现该接口(interface)?我是在 Web Api 类、Global.asax 中执行此操作,还是我完全偏离了轨道,需要在其他地方执行此操作?

最佳答案

您不需要实现此接口(interface),我只是将其列出作为引用 - 该代码已经是 Web API 源代码的一部分(在 System.Web.Http/Hosting/IHostBufferPolicySelector.cs )

您需要做的是重写基类System.Web.Http.WebHost.WebHostBufferPolicySelector

这就足够了:

public class NoBufferPolicySelector : WebHostBufferPolicySelector
{
public override bool UseBufferedInputStream(object hostContext)
{
var context = hostContext as HttpContextBase;

if (context != null)
{
if (string.Equals(context.Request.RequestContext.RouteData.Values["controller"].ToString(), "uploading", StringComparison.InvariantCultureIgnoreCase))
return false;
}

return true;
}

public override bool UseBufferedOutputStream(HttpResponseMessage response)
{
return base.UseBufferedOutputStream(response);
}
}

然后在 Global.asaxWebApiConfig.cs(无论您喜欢哪个)中注册您的新类:

GlobalConfiguration.Configuration.Services.Replace(typeof(IHostBufferPolicySelector), new NoBufferPolicySelector());

关于c#-4.0 - 实现 System.Web.Http.WebHost.WebHostBufferPolicySelector.IHostBufferPolicySelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12699364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com