ihttphandler完全按原样写出文件

时间:2010-03-11 00:49:49

标签: c# asp.net ihttphandler

我正在编写一个继承自IHttpHandler的类,用于脚本和css组合。如果查询字符串定义了特殊参数,我只想合并。如果未定义此参数,那么我想写入文件的内容,就好像处理程序甚至不参与一样。传送文件的最佳方法是什么?

EIDT:

我遇到的一个问题是我在页面上有一个脚本标记,它引用了虚拟目录中的脚本,但我所在的页面位于应用程序的子目录中。

引用控制脚本的页面位于webserver / Admin / Default.aspx。当我在实现IHttpHandler的类中访问Request对象时,所有文件路径属性如下:webserver / Admin /〜/ SharedScripts / control.js。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可以像这样检查'ProcessRequest(HttpContext context)'方法中的查询字符串参数:

context.Request.QueryString["paramertername"]

如果要按原样流式传输所请求的文件,则可以执行以下操作:

        string physicalFilePath = context.Request.PhysicalPath;
        string fileContent = string.Empty;

        // Determine whether file exists
        if (File.Exists(physicalFilePath))
        {
            // Read content from file
            using (StreamReader streamReader = File.OpenText(physicalFilePath))
            {
                fileContent = streamReader.ReadToEnd();
            }
        }

        context.Response.Output.Write(convertedFile);
        context.Response.Flush();

PS:您还可以查看以下代码项目文章,以获得更全面的示例:http://www.codeproject.com/KB/locale/LocalizedScriptsAndStyles.aspx