重载SimpleWorkerRequest

从MSDN上知道可以重载SimpleWorkerRequest来实现这现更多自己的行为。如何重载SimpleWorkerRequest?从Cassini的Request.cs源代码中,我们可以看到很多方法与实现方式,其中的 

在windows应用程序中运行asp.net程序的中文乱码问题SendResponseFromMemory(byte[] data, int length) 
在windows应用程序中运行asp.net程序的中文乱码问题SendResponseFromFile(String filename, 
long offset, long length) 
在windows应用程序中运行asp.net程序的中文乱码问题SendResponseFromFile(IntPtr handle, 
long offset, long length) 
在windows应用程序中运行asp.net程序的中文乱码问题SendResponseFromFileStream(FileStream f, 
long offset, long length) 
在windows应用程序中运行asp.net程序的中文乱码问题FlushResponse(
bool finalFlush)

 是我最感兴趣。分析Request.cs的源代码,我知道
SendResponseFromMemory(byte[] data, int length)
FlushResponse(bool finalFlush)
应是我需要重点考虑的

以下是MyRequest.cs的源代码

在windows应用程序中运行asp.net程序的中文乱码问题public class MyRequest:SimpleWorkerRequest 


为什么使用MemoryStream来读取整个页面的字符串,再写到文件里呢?为什么为直接写到文件中呢?这是出于编码的考虑,直接写到文件中,文件内容的编码得不到保证,再使用IEWebbrowser打开的时候还是会出现乱码,尽管用记事本打开并没有看到乱码。如果使用IE打开,调整使用的编码你就能看到如windows程序一样的效果。

大家可能留意到代码保留了一个gb2312来构造StreamWriter的代码,使用gb2312的时候会有一个奇怪的现象,如果aspx页面编码指定是charset=gb2312的话,界面正常;如果是charset=utf-8时,IE自然会选择utf8,结果显示的页面乱码,只有选择为gb2312时才正常。使用utf8来构造StreamWriter就不存在这个问题。

相关文章: