今天,我将在调用httprequest后与您讨论不支持的方法或属性。getbuffelessinputstream。做什么可能很多人都不太懂。为了让大家更好地了解,边肖为大家总结了以下内容。希望大家能从这篇文章中有所收获。
英寸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”并确保兼容性。
名称空间库服务
{
public class wcfreadentitybodymodework roundmodule : ihttpmmodule
{
publicvoidDispose()
{
}
public void init(HttpApplicationContext)
{
语境。Begin request=context _ Begin request;
}
public void context _ Beginrequest(object sender,EventArgse)
{
//这将强制httpcontext . request . readentitybody为“Classic”,并确保兼容性。
stream stream=(senderashtpapplication). request . inputstream;
}
}
}2.
将以下行添加到配置模块设置中,以便在web.config中注册此模块.
system.webServer
modulesrunallmanagedmmodulesfor all requests=' true '
addname=' wcfreadentitybodymodeworkroundmodule ' type=' SKWcfService。wcfreadentitybodymodeworkroundmodule '/
/模块
!-
若要在调试期间浏览Web应用程序根目录,请将以下值设置为“真”。
部署前将该值设置为False可以避免泄露Web应用程序文件夹信息。
-
directoryBrowseenabled='true'/
/system.webServer如果您的项目无法修改,您可以将此Http模块编写在单独的程序集中,单独的GAC中,并在web.config中注册此模块.
现在尝试访问它应该成功的服务!
读完上面的内容,在调用httprequest之后,您不支持这个方法或属性。getbuffelessinputstream。我该怎么办?还有什么进一步的了解吗?如果您想了解更多知识或相关内容,请关注行业资讯频道,感谢您的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38068.html