HttpServerUtility.Execute,MSDN上的解析是這樣的:在當(dāng)前請(qǐng)求的上下文中執(zhí)行指定虛擬目錄的處理程序。同時(shí)間還列出了它的4個(gè)重載的方法:
創(chuàng)新互聯(lián)致力于成都做網(wǎng)站、網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過(guò)標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
Execute(string),Execute(string,bool),Execute(string,TextWriter,bool),Execute(IHttphandler,TextWriter,bool)
我們主要來(lái)談?wù)労竺鎯蓚€(gè)。
Execute(string,TextWriter,bool)第一個(gè)string類(lèi)型的參數(shù)的解析是:要執(zhí)行的URL路徑,所以我個(gè)人理解成是請(qǐng)求的虛擬路徑。
Execute(IHttphandler,TextWriter,bool)第一個(gè)IHttphandler類(lèi)型參數(shù)的解析是一個(gè)接口,接口本身是沒(méi)有意義的,主要是Httphandler實(shí)現(xiàn)了它。說(shuō)到Httphandler我多說(shuō)一句。Httphandler是Http請(qǐng)求的處理中心,也正在Httphandler里面,ASP.NET對(duì)我們請(qǐng)求的頁(yè)面做了執(zhí)行的動(dòng)作,然后將處理之后的結(jié)果附加在HTTP流中再返回到HttpModule中。
下面我分別嘗試了調(diào)用了這兩個(gè)方法:
首先是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());
- }
但是它每次都會(huì)在context.Server.Execute(url ,sw,false); 這一句拋出異常:為XXX.aspx執(zhí)行子請(qǐng)求時(shí)出錯(cuò)!
后來(lái)我把程序改成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());
- }
居然通過(guò)了!
我始終找不到問(wèn)題的所在,百度與谷歌都翻遍了,還是找不到想要的答案,而且也沒(méi)有找到有人提出相類(lèi)似的問(wèn)題?。∵@難道是我對(duì)這個(gè)函數(shù)的參數(shù)或者用法理解錯(cuò)了?困惑中