网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

关于HttpServerUtility.Execute的困惑

     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)

  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执行子请求时出错!

    后来我把程序改成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()); 

    居然通过了!

    我始终找不到问题的所在,百度与谷歌都翻遍了,还是找不到想要的答案,而且也没有找到有人提出相类似的问题!!这难道是我对这个函数的参数或者用法理解错了?困惑中


分享名称:关于HttpServerUtility.Execute的困惑
分享URL:http://bjjierui.cn/article/picihd.html

其他资讯