您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)在調(diào)用HttpRequest.GetBufferlessInputStream之后不支持此方法或?qū)傩?。怎么辦,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
在.net 4.5中,WCF利用緩沖區(qū)較少的輸入流來(lái)實(shí)現(xiàn)可伸縮性優(yōu)勢(shì)。因此,當(dāng)您嘗試訪問(wèn)HttpContext.Current.Request.InputStream屬性時(shí),您可能會(huì)遇到以下異常,因?yàn)镮nputStream屬性會(huì)嘗試讓您處理Classic流,因?yàn)樗鼈兌疾患嫒荨D赡苓€會(huì)看到HttpContext.Current.Request.Form參數(shù)的另一個(gè)副作用變?yōu)榭铡?/p>
“ 在調(diào)用HttpRequest.GetBufferlessInputStream之后,不支持此方法或?qū)傩??!?/strong>
1.在同一個(gè)WCF項(xiàng)目中添加一個(gè)簡(jiǎn)單的HttpModule,它將在WCF讀取它之前訪問(wèn)每個(gè)請(qǐng)求的InputStream屬性,以便它將強(qiáng)制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) { //這將強(qiáng)制HttpContext.Request.ReadEntityBody為“Classic”并確保兼容性。 Stream stream = (sender as HttpApplication).Request.InputStream; } } }
2.
在<configuration> <modules>設(shè)置中添加以下行,在web.config中注冊(cè)此模塊。
<system.webServer> <modules runAllManagedModulesForAllRequests="true" > <add name ="WcfReadEntityBodyModeWorkaroundModule" type="SKWcfService.WcfReadEntityBodyModeWorkaroundModule"/> </modules> <!-- 若要在調(diào)試過(guò)程中瀏覽 Web 應(yīng)用程序根目錄,請(qǐng)將下面的值設(shè)置為 True。 在部署之前將該值設(shè)置為 False 可避免泄露 Web 應(yīng)用程序文件夾信息。 --> <directoryBrowse enabled="true" /> </system.webServer>
如果您的項(xiàng)目無(wú)法修改,那么您可以在單獨(dú)的程序集中編寫此Http模塊,單獨(dú)GAC,并在web.config中注冊(cè)此模塊。
現(xiàn)在嘗試訪問(wèn)它應(yīng)該成功的服務(wù)!
看完上述內(nèi)容,你們對(duì)在調(diào)用HttpRequest.GetBufferlessInputStream之后不支持此方法或?qū)傩?。怎么辦有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。