在调用HttpRequest.GetBufferlessInputStream之后不支持此方法或属性。怎么办

今天就跟大家聊聊有关在调用HttpRequest.GetBufferlessInputStream之后不支持此方法或属性。怎么办,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名雅安服务器托管、营销软件、网站建设、惠来网站维护、网站推广。

在.net 4.5中,WCF利用缓冲区较少的输入流来实现可伸缩性优势。因此,当您尝试访问HttpContext.Current.Request.InputStream属性时,您可能会遇到以下异常,因为InputStream属性会尝试让您处理Classic流,因为它们都不兼容。您可能还会看到HttpContext.Current.Request.Form参数的另一个副作用变为空。

“ 在调用HttpRequest.GetBufferlessInputStream之后,不支持此方法或属性。”

1.在同一个WCF项目中添加一个简单的HttpModule,它将在WCF读取它之前访问每个请求的InputStream属性,以便它将强制HttpContext.Request.ReadEntityBody为“Classic”并确保兼容性。

namespace SKWcfService
{
    public class WcfReadEntityBodyModeWorkaroundModule : IHttpModule
    {
        public void Dispose()
        {

        }

        public void Init(HttpApplication context)
        {
            context.BeginRequest += context_BeginRequest;
        }
        public void context_BeginRequest(object sender, EventArgs e)
        {
            //这将强制HttpContext.Request.ReadEntityBody为“Classic”并确保兼容性。
            Stream stream = (sender as HttpApplication).Request.InputStream;
        }
    }
}

2.

设置中添加以下行,在web.config中注册此模块。

 


    
    
      
    
    
  

如果您的项目无法修改,那么您可以在单独的程序集中编写此Http模块,单独GAC,并在web.config中注册此模块。

现在尝试访问它应该成功的服务!

看完上述内容,你们对在调用HttpRequest.GetBufferlessInputStream之后不支持此方法或属性。怎么办有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


文章名称:在调用HttpRequest.GetBufferlessInputStream之后不支持此方法或属性。怎么办
标题链接:http://azwzsj.com/article/jjdgee.html