日期:2014-05-20  浏览次数:20911 次

Asp.Net动态创建网页并浏览
本帖最后由 ymhd5 于 2011-08-01 18:05:52 编辑
问题如题目:
详细:就是我浏览一个网址,注:对应的网页在网站是“没有”的,然后我在Global中加入了代码(下面附上)即:如果没有这个网页,就创建它。

但是问题出现在:VS2008的服务器下是完全没问题的,部署到自己的iis6.0和网站的iis7.0都不运行Global代码,而是先检索是否存在,不存在,直接返回NO FOUND!~~

我故意在WebConFig写个错误,依然返回NO FOUND~!!!,换句话讲,放到iis服务器上,服务器不会先运行webconifg,Global 而是先检索???是这样吗?

这个貌似和别人的Global的事件不运行又不一样。。。。

请大侠帮帮忙。。。

附上Global中的代码:
protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string path = Request.PhysicalPath;
        if (!System.IO.File.Exists(path))
        {
            System.IO.StreamWriter sw = new System.IO.StreamWriter(path,false,Encoding.UTF8);
            sw.Write("Hello 我是刚被创建的页面!~~");
            sw.Flush();
            sw.Dispose();
        }
    }


PS:不要百度复制给我,我不需要,谢谢……
------解决方案--------------------
引用:
简单的说,就是我想要HTML网页 不先走ISS,而是先走Aspx的服务器,因为在IIS看来,只要没有这个网页就直接返回404(IIS默认页,找不到网页),而Aspx服务器先运行后,才会返回404(应用服务器错误)

怎么让html静态的变成动态的……

当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后Check请求资源的类型,并依据资源映射信息(存储在IIS元库中,一种IIS专用的配置数据库)将请求的资源分配给特定的处理程序模块。若请求的是静态资源(img,text,html等)则由IIS处理(IIS在本地Web Server上访问请求的文件),将内容输出到控制台,发出请求的浏览器就能接收到它了。若需要在服务器端处理的请求,则会被传到已注册的扩展模块中,aspx请求会被分配给aspnet_isapi.dll,让这个程序开始处理代码,生成标准的HTML代码,然后将这些HTML加入到原有的HTML中,最后把完整的HTML返回给IIS,IIS再把内容发送到客户浏览器。

对于你想实现的方式,建议把这些动态页面通过一个统一接口页面连进来,即 a.aspx?url=b.aspx 的方式,返回在a.aspx中判断是否存在b.aspx。不存在就创建,并重定向。
------解决方案--------------------
利用URL重写应该可以解决,
RewriteRule /(\w+).html /servlet.aspx [I,L]

这样在servlet.aspx页面进行处理,不知可行否。