溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在調(diào)用HttpRequest.GetBufferlessInputStream之后不支持此方法或?qū)傩?。怎么辦

發(fā)布時(shí)間:2021-10-20 15:18:15 來(lái)源:億速云 閱讀:295 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(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è)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI