您好,登錄后才能下訂單哦!
HttpServerUtility.Execute,MSDN上的解析是這樣的:在當前請求的上下文中執行指定虛擬目錄的處理程序。同時間還列出了它的4個重載的方法:
Execute(string),Execute(string,bool),Execute(string,TextWriter,bool),Execute(IHttphandler,TextWriter,bool)
我們主要來談談后面兩個。
Execute(string,TextWriter,bool)第一個string類型的參數的解析是:要執行的URL路徑,所以我個人理解成是請求的虛擬路徑。
Execute(IHttphandler,TextWriter,bool)第一個IHttphandler類型參數的解析是一個接口,接口本身是沒有意義的,主要是Httphandler實現了它。說到Httphandler我多說一句。Httphandler是Http請求的處理中心,也正在Httphandler里面,ASP.NET對我們請求的頁面做了執行的動作,然后將處理之后的結果附加在HTTP流中再返回到HttpModule中。
下面我分別嘗試了調用了這兩個方法:
首先是Execute(string,TextWriter,bool)
- public void Proce***equest(HttpContext context)
- {
- string url = context.Request.FilePath;
- StringWriter sw = new StringWriter();
- context.Server.Execute(url ,sw,false);
- context.Response.Write(sw.ToString());
- }
但是它每次都會在context.Server.Execute(url ,sw,false); 這一句拋出異常:為XXX.aspx執行子請求時出錯!
后來我把程序改成Execute(IHttphandler,TextWriter,bool)
- public void Proce***equest(HttpContext context)
- {
- string url = context.Request.FilePath;
- IHttpHandler handler = BuildManager.CreateInstanceFromVirtualPath(url, typeof(object)) as IHttpHandler;
- StringWriter sw = new StringWriter();
- context.Server.Execute(handler,sw,false);
- context.Response.Write(sw.ToString());
- }
居然通過了!
我始終找不到問題的所在,百度與谷歌都翻遍了,還是找不到想要的答案,而且也沒有找到有人提出相類似的問題!!這難道是我對這個函數的參數或者用法理解錯了?困惑中
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。