前段时间简单的写了篇邮件内容生成的方案,地址:http://www.cnblogs.com/sheepswallow/archive/2013/05/12/3073911.html

在该文章里提到了5种方法,其中提到第5点——自己写一个解析aspx的解析类,是最困难的。我这个人有个不知道是优点还是缺点的习惯,就是专挑难的做,于是我查了.net4.0的源码,发现要解析aspx文件,需要一个实现了HttpWorkerRequest这个抽象类的子类。完整的实现全部抽象方法似乎困难挺大的,所以我使用了微软提供的一个已经简单实现的类——SimpleWorkerRequest。

从文档上理解,我写出了以下的代码:

public string GetPageContent()

{

StringBuilder sb = new StringBuilder();

using (System.IO.StringWriter sw = new StringWriter(sb))

{

SimpleWorkerRequest swr = new SimpleWorkerRequest("/", Environment.CurrentDirectory, "text.aspx", "", sw);

//对HttpRuntime这个类的理解可以去Google"asp.net的Http管道"

HttpRuntime.ProcessRequest(swr);

}

return sb.ToString();

}

这段代码可以运行成功,但返回来的数据却不是aspx解析成功之后的HTML,而已一些异常信息,具体的异常信息我不贴了。

在Google里查了n多文档,看着恶心的英语文章,看到想吐后,我发现很多都要使用一个MarshalByRefObject类的子类,是不是需要不能直接解析一个aspx页面,而是需要象网站那样建立一个目录,建立一个应用程序域来监视该目录,才能解析aspx文件呢?理论知识不足,希望哪位看了这篇文章的大牛能解答下。

参考网上的资料,我写下了以下代码:

public class AspxCreator : MarshalByRefObject

{

/// <summary>

/// 创建

/// </summary>

/// <param name="appPath">需要解析的页面的根目录,在网站项目中使用时,不能和网站同一个目录,但可以是网站的子目录</param>

/// <returns></returns>

public static AspxCreator Create(string appPath)

{

return (AspxCreator)ApplicationHost.CreateApplicationHost(typeof(AspxCreator), "/", appPath);

}

public string GetPageContent(string page, string query)

{

StringBuilder sb = new StringBuilder();

using (System.IO.StringWriter sw = new StringWriter(sb))

{

SimpleWorkerRequest swr = new SimpleWorkerRequest(page, query, sw);

//对HttpRuntime这个类的理解可以去Google"asp.net的Http管道"

HttpRuntime.ProcessRequest(swr);

}

return sb.ToString();

}

}

使用AspxCreator就成功或许到aspx解析后的内容了,但这样还有几个问题:

  1. ApplicationHost.CreateApplicationHost这个方法的调用失败
  2. 中文会乱码
  3. 子目录无效

写这篇的时候,电脑没有配置运行环境,所以没办法贴出一些效果图,所以上面几个问题我会在下篇再写,到时候增加些图片可能好点。

以前几乎没写过博客,在写博客方面是一个新人,发现写篇博客不容易,想写篇号博客更不容易,对博客园的大牛们致以最真诚的敬意,谢谢您们把泡妞的时间用来给我们这些新手留下宝贵的博客。

我现在打算遇到的难题或浪费很多时间解决的问题写下简单的解决过程,给其他后人作下参考,希望能坚持下去。

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

解析Aspx文件(asp.net)相关推荐

  1. 静态网页和动态网页—HTML(htm)文件和aspx(asp)文件

    l  定义 ²  静态网页     静态网页:对于动态网页而言,是指没有后台数据库.不含程序和不可交互的网页.你编的是什么它显示的就是什么.不会有任何改变.静态网页相对更新起来比较麻烦,适用于一般更新 ...

  2. 应用Ajax.net在Asp.net中实现无aspx文件应用

    1,Ajax是什么 Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器交换数据的Web应用开发方法.这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新.使用Ajax ...

  3. ASP.NET中.aspx文件和.aspx.cs文件的功能区别和特点

    .aspx与aspx.cs区别特点和功能 1) 首先了解一下整个asp.net网站的结构特点 整个网站 aspx/cshtml:前台页面,区别是编译引擎不一样,后者在ASP.net MVC3中引入 . ...

  4. 【转载】把aspx文件编译成DLL文件-.NET教程,Asp.Net开发

    前言 asp.net不是asp的简单升级,而是微软.net计划中的一个重要组成部分,它依托.net的多语言与强大的类库支持,引进了服务端html控件与web控件,自动处理控件的客户端与服务端的 交互, ...

  5. ASP.NET:aspx文件

    建立aspx文件: 建立后将会获得三个文件:.aspx文件..aspx.cs文件和.designer.cs文件,其中.aspx文件属于前端代码文件,.aspx.cs就是后端代码文件. 1.aspx文件 ...

  6. 读文件 —— WEB前端读取本地文件内容哪些事(前台解析txt文件)……

    强制让浏览器允许JS读写本地文件--的操作! 问题描述: 让自己的浏览器允许js读写本地文件,尽可能多的兼容各种浏览器.(即本机的js文件读写本机的文件) 问题回复--1: 您的意思是不需要浏览器与用 ...

  7. 在服务器上如何打开aspx文件,aspx是什么文件_aspx用什么软件打开

    有用户从网上下载文件的时候,发现有一些是aspx格式文件,但是却不知道这个aspx是什么文件,又要怎么打开呢,针对这个情况,小编给大家带来aspx是什么文件以及aspx用什么软件打开吧. aspx是什 ...

  8. aspx页面打开html文件,aspx文件如何打开

    aspx文件如何打开 发布时间:2012-10-28 02:45:16   作者:佚名   我要评论 aspx文件是微软的在服务器端运行的动态网页文件,通过IIS解析执行后可以得到动态页面,是微软推出 ...

  9. 怎样打开aspx文件

    ASP.NET 是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的 Web 应用程序,通过IIS解析执行后可以得到动态页面,是微软推出的一种新的网络编程方法,而不是asp的简单升级,那 ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析
  2. Dell Fluid FS 集群NAS系统在4K非编环境的卓越表现
  3. HTML中添加后退、前进、刷新的超链接
  4. SpringBoot微信公众号授权访问认证文件部署
  5. 【LeetCode】3.无重复字符串的最长子串
  6. c++Data Member的绑定
  7. HTMLTestRunner 汉化版---来源一个大神的源码(加了失败截图,用例失败重新执行 功能)...
  8. java钟使用dwr_DWR中各种java方法的调用
  9. 20165306 Exp9 Web安全基础
  10. mysql 升序_MySQL之排序检索数据
  11. es文件浏览器怎么用_python爬虫入门:什么是爬虫,怎么玩爬虫?
  12. 操作系统-页式虚拟存储器管理系统设计
  13. 虚拟机怎么启动共享文件服务器,VMware虚拟机中ubuntu启用本地文件共享的设置方法...
  14. LTD营销SaaS-官微云代理商加盟服务
  15. 造轮子之后台管理模板
  16. 手把手教你如何写一个三子棋/N子棋的小游戏
  17. 前阿里政委张丽俊:人,是CEO最重要的一课
  18. 学习算法笔记(12)
  19. office2013中word设置标题自动编号
  20. ChatGPT带你一起了解C语言中的fclose()

热门文章

  1. 详解softmax函数
  2. 鄱阳湖在哪里 怎么去鄱阳湖
  3. MISCONF Redis is configured to save RDB snapshots~
  4. PHP 基础知识代码总结
  5. java chrome puppeteer 截图
  6. Latex 换行不缩进
  7. Hive是否支持in函数
  8. el-date-picker 最多只能选中一个月 选中第一个日期后 第二个日期给出可选范围限制
  9. 【MM32F5270】Keil开发环境搭建
  10. 工商银行拥抱互联网的“e-难题”