关于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()); 

  居然通过了!

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:关于HttpServerUtility.Execute的困惑-创新互联
网站路径:http://ybzwz.com/article/gppjh.html