溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于HttpServerUtility.Execute的困惑

發(fā)布時間:2020-07-24 19:28:46 來源:網(wǎng)絡 閱讀:1159 作者:zl_ban 欄目:編程語言

     HttpServerUtility.Execute,MSDN上的解析是這樣的:在當前請求的上下文中執(zhí)行指定虛擬目錄的處理程序。同時間還列出了它的4個重載的方法:

 

Execute(string),Execute(string,bool),Execute(string,TextWriter,bool),Execute(IHttphandler,TextWriter,bool)

    我們主要來談談后面兩個。

    Execute(string,TextWriter,bool)第一個string類型的參數(shù)的解析是:要執(zhí)行的URL路徑,所以我個人理解成是請求的虛擬路徑。

    Execute(IHttphandler,TextWriter,bool)第一個IHttphandler類型參數(shù)的解析是一個接口,接口本身是沒有意義的,主要是Httphandler實現(xiàn)了它。說到Httphandler我多說一句。Httphandler是Http請求的處理中心,也正在Httphandler里面,ASP.NET對我們請求的頁面做了執(zhí)行的動作,然后將處理之后的結果附加在HTTP流中再返回到HttpModule中。

    下面我分別嘗試了調用了這兩個方法:

    首先是Execute(string,TextWriter,bool)

  1. public void Proce***equest(HttpContext context) 
  2.     string url = context.Request.FilePath; 
  3.     StringWriter sw = new StringWriter(); 
  4.     context.Server.Execute(url ,sw,false); 
  5.     context.Response.Write(sw.ToString()); 

    但是它每次都會在context.Server.Execute(url ,sw,false); 這一句拋出異常:為XXX.aspx執(zhí)行子請求時出錯!

    后來我把程序改成Execute(IHttphandler,TextWriter,bool)

  1. public void Proce***equest(HttpContext context) 
  2.     string url = context.Request.FilePath; 
  3.     IHttpHandler handler = BuildManager.CreateInstanceFromVirtualPath(url, typeof(object)) as IHttpHandler; 
  4.  
  5.     StringWriter sw = new StringWriter(); 
  6.     context.Server.Execute(handler,sw,false); 
  7.     context.Response.Write(sw.ToString()); 

    居然通過了!

    我始終找不到問題的所在,百度與谷歌都翻遍了,還是找不到想要的答案,而且也沒有找到有人提出相類似的問題??!這難道是我對這個函數(shù)的參數(shù)或者用法理解錯了?困惑中

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI