您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關在調用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.
在<configuration> <modules>設置中添加以下行,在web.config中注冊此模塊。
<system.webServer> <modules runAllManagedModulesForAllRequests="true" > <add name ="WcfReadEntityBodyModeWorkaroundModule" type="SKWcfService.WcfReadEntityBodyModeWorkaroundModule"/> </modules> <!-- 若要在調試過程中瀏覽 Web 應用程序根目錄,請將下面的值設置為 True。 在部署之前將該值設置為 False 可避免泄露 Web 應用程序文件夾信息。 --> <directoryBrowse enabled="true" /> </system.webServer>
如果您的項目無法修改,那么您可以在單獨的程序集中編寫此Http模塊,單獨GAC,并在web.config中注冊此模塊。
現在嘗試訪問它應該成功的服務!
看完上述內容,你們對在調用HttpRequest.GetBufferlessInputStream之后不支持此方法或屬性。怎么辦有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。